.ssh / config에 비밀번호 추가


24

우분투 12.04를 사용하고 있습니다. 매일 많은 서버에 연결하기 위해 ssh를 사용하고 있으므로 매개 변수를 .ssh / config 파일 에 넣습니다 . 이처럼 :

Host server1
User tux
Port 2202
HostName xxx.x.xx.x

각 연결마다이 파일에 비밀번호를 넣는 방법이 있습니까? 따라서 서버가 암호를 요청할 때 터미널은 패스를 넣어 서버로 보내므로 매번 암호를 입력 할 필요가 없습니다. 또한 공개 / 개인 키 쌍을 사용하고 싶지 않습니다.


10
이것이 키 페어입니다.
Michael Hampton

답변:


31

아니요, openssh 내장 메커니즘을 사용하여 ssh 인증을 위해 비 대화식 방식으로 암호를 명령 줄에 지정하거나 제공하는 방법이 없습니다. 적어도 내가 아는 것은 하나도 없습니다. 암호를 expect 스크립트로 하드 코딩 할 수는 있지만 좋은 해결책은 아닙니다.

Michael이 말한 것처럼 암호가없는 인증을 위해 키 쌍을 사용하고 싶을 것입니다. 결국 개인 키는 파일에서 거의 큰 암호입니다.


문제는 내 클라이언트 서버이며 키를 사용한 로그인을 허용하지 않습니다. 자격 증명이 USB 저장 장치에서 가져온 n 모든 서버에 로그인 할 것으로 예상하여 bash 스크립트를 작성하고 있습니다. 감사합니다
Ajo Augustine

1
꽤 안전하지 않습니다. 해당 파일에서 강력한 파일 권한으로 해당 파일을 잠그는 것이 좋습니다.
Danila Ladner

1
키를 허용하지 않으면 ssh의 작동 방식을 이해하지 못합니다. 비밀번호 로그인을 허용하면 사전 공격 등이 가능합니다 (매우 느린 경우도 있음). 개인 키 쌍으로 동일한 작업을 수행하는 것은 불가능합니다. 키가 잘못된 손에 빠질 염려가 있습니다. 키의 개인 부분을 암호로 암호화하여 사용할 수 있도록 두 가지 요소가 필요합니다 (암호는 키 체인에서 / ssh 에이전트가 기억할 수 있음) )
Alex Berry

고객을 교육하십시오. 암호 인증을 비활성화하고 그 반대의 키만 허용하는 것이 좋습니다.
Nikita Kipriyanov

20

일련의 주석을 피하려면 : 예, 이것은 안전하지 않습니다 (논쟁 적으로 안전하지도 않습니다). 격리 된 네트워크의 실습 환경이나 전체 재설정 / 포맷없이 프로덕션 서버 또는 잠재적으로 프로덕션 서버와 관련이없는 유사한 상황에서만 수행하는 것이 좋습니다.

2950 스위치가 개인 / 공개 키를 지원하지 않는다고 생각하고 어느 시점에서 그 지식을 얻을 수 있기를 희망하면서 아직 설정하지 않았지만 아직 거기에 없습니다.

별명과 sshpass를 사용하여이를 수행 할 수 있습니다.

  1. sshpass 설치
  2. 질문에 나열된 사용자 이름을 포함하도록 .ssh / config 파일을 변경하십시오.
  3. 터미널에 별칭을 추가하십시오 (.bashrc를 사용했으며 gloabl 설정을 권장하지 않습니다)
  4. 별명을 사용하여 대상에 로그인

내 예제 별명은 다음과 같습니다.

alias ssc='sshpass -pcisco ssh'

여기서 "cisco"는 비밀번호입니다. -p와 비밀번호 사이에는 공백이 없습니다.

사용법은 (질문을 참조하십시오) :

ssc server1

참고 : 검색 엔진을 사용하는 사용자에 대해서만 제목에 대한 질문에 답변합니다. 질문 예와 같은 서버를 사용하는 경우이 답변이 아닌 개인 / 공개 키 쌍을 사용해야합니다.


어떤 이유로 든 키로 실제로 작업 할 수없는 유일한 가능한 해결 방법.
sjas

공장! 대단해
Rahul

별칭을 완전한 셸 스크립트로 바꾸는 것이 좋습니다. 그러면 호스트 매개 변수에 따라 사용할 비밀번호 파일을 동적으로 선택할 수 있습니다.
7heo.tk

cli 프로그램의 경우와 마찬가지로 -p와 암호 사이에 공백을 두는 것이
좋습니다

10

예, 위에서 언급했듯이 비밀번호를 간단히 저장할 수있는 방법이 없습니다. 권한 부여에 ssh 키를 사용하는 것이 좋습니다.

먼저 키를 생성하십시오.

ssh-keygen

그런 다음 서버 / 데스크탑에서 키를 복사하십시오.

ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:

그게 다야. 비밀번호를 다시 묻지 않습니다.

또한 일반적으로 비밀번호 인증을 제거하는 것이 좋지만 귀하에게 달려 있습니다.


1
ssh-copy-id를 참조 해 주셔서 감사합니다! 나는 약간의 contraption을 사용 sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"했지만이 프로그램은 더 깨끗하고 의도를 분명히합니다.
masterxilo

3

ssh 로이 작업을 수행 할 수있는 방법이 없습니다. 얻을 수있는만큼 안전하지 않습니다.

Danila가 언급했듯이 expect 스크립트를 사용할 수는 있지만 귀찮게하지는 않습니다.

당신이 무엇을 달성하려고하는지 궁금합니다. 한 서버에서 다른 서버로 홉핑 하시겠습니까? 이 경우 워크 스테이션에서 ssh-agent를 설정 및 사용하고 대상 호스트에서 에이전트 전달을 사용 가능하게합니다. 이런 식으로 자격 증명 교환은 개인 키를 복사하지 않고도 로컬 에이전트로 라우팅됩니다.


VisualStudio에는이 기능이 도움이되는 앱 비밀번호와 같은 개인 액세스 토큰 개념이 있습니다.
spuder

1

~/.local/bin디렉토리 에서이 스크립트를 사용합니다

#!/usr/bin/bash

ORIG_SSH=/usr/bin/ssh
HOST=$1

SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
    export SSHPASS
    sshpass -e $ORIG_SSH $@
else
    $ORIG_SSH $@
fi

파일 #PS <password>에서 와 같이 암호를 지정할 수 .ssh/config있습니다.

그러나 모두가 말했듯 이 가능하면 ssh-keys함께 사용 하는 것이 좋습니다ssh-agent


0

이 상황을 처리하는 올바른 방법은 세션 기반 ssh-agent를 사용하는 것입니다. 방법은 다음과 같습니다.

$ eval `ssh-agent`
$ ssh-add /home/user/.ssh/your_key
Enter passphrase for /home/user/.ssh/your_key:

그런 다음 암호는 나머지 세션 동안 유효하게 유지됩니다. 첫 번째 명령 만 한 번만 실행하면 그 이후에 원하는만큼 키를 추가 할 수 있습니다. 세션이 종료되면 에이전트도 종료되므로 하드 코딩 된 비밀번호 스토리지가 없습니다.

오래지 않아이 답변이 여기에 없다는 사실에 충격을 받았습니다!


그것이 없었던 이유는 아마도 포스터가 공개 / 개인 키 쌍을 사용하고 싶지 않다고 구체적으로 말했기 때문일 것입니다.
Jenny D는

1
보고 싶었습니다. 감사합니다. 그런 다음 SSH에 키 페어를 사용하지 않는 것은 정말 나쁜 생각이라고 덧붙입니다. 더 안전하고 편리합니다 ... OP가 재고 할 것을 촉구합니다. 암호가없는 키 쌍을 사용하는 것은 키 쌍과 암호가없는 것보다 훨씬 안전합니다. 그러나 이상적으로는 암호를 사용하여 키 쌍을 사용하고 암호를 저장해야하는 세션에있을 때 제공 한 단계를 사용하는 것이 이상적입니다.
pranalli

-1

sshpass를 사용하여 더 안전한 방법 으로이 작업을 수행 할 수 있습니다

  1. 기록없이 비밀번호 설정

    내보내기 PS = your_password ; history -d $ (history 1)

  2. ~ / .ssh / config에서 위와 같이 호스트 별명을 설정하십시오.

  3. ssh pass를 사용하여 환경 변수를 사용하고 단일 명령으로 필요한 시스템에 로그인하십시오.

sshpass -p $ PS ssh를 host_alias

환경에서 비밀번호를 보유하고 있으며 실행중인 스크립트를 모르는 경우 실행중인 스크립트가이 비밀번호를 유출 할 위험이 있습니다.


안전하지 않습니다. 그리고 그것은 추악합니다.
7heo.tk

그 "솔루션"이 문제보다 길지 않습니까? 이 모든 추가 단계를 수행해야하며 입력해야합니다sshpass -p $PS ...
Dan H
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.