사용자 이름/비밀번호 대신 키를 사용하여 사용자를 인증하도록 ssh를 어떻게 설정합니까?
각 사용자에 대해 : ssh-keygen -t rsa
를 사용하여 키 쌍을 로컬 컴퓨터에서 생성해야합니다 (rsa
도 dsa
또는 rsa1
로 대체 할 수 있음) 이러한 옵션은 권장되지 않습니다). 그런 다음 공개 키 (id_rsa.pub
)의 내용을 로그인중인 서버의 ~/.ssh/authorized_keys
에 넣어야합니다.
나는 실제로 --nix (기본적으로 * nix에있는 ssh-copy-id ) 스크립트를 선호합니다 ( Mac OS X 쉽게 넣을 수 있습니다). . 매뉴얼 페이지에서 :
ssh-copy-id는 ssh를 사용하여 원격 컴퓨터에 로그인하는 스크립트입니다 (아마도 로그인 암호를 사용하므로 여러 ID를 영리하게 사용하지 않는 한 암호 인증을 활성화해야합니다)
또한 원격 사용자의 홈인 ~/.ssh 및 ~/.ssh/authorized_keys의 권한을 변경하여 그룹 쓰기 기능을 제거합니다 (원격 sshd에 구성에 엄격한 모드가 설정되어 있으면 로그인 할 수 없음).
-i 옵션이 제공되면 ssh-agent에 키가 있는지 여부에 관계없이 ID 파일 (기본값은 ~/.ssh/identity.pub)이 사용됩니다.
흠, 이해하지 마십시오. 키를 만들고 시작하면됩니다. :) HOWTO 또한 비밀번호를 통한 로그인을 금지 할 수 있습니다. 예를 들어/etc/ssh/sshd_config :
PasswordAuthentication no
이 작업은 매우 간단합니다. 여기서 에 대한 간단한 연습이 있습니다.
요점은 다음과 같습니다.
ssh-keygen
컴퓨터에서. 그러면 공개 키와 개인 키가 생성됩니다.~/.ssh/id_rsa.pub
)에서 ~/.ssh/authorized_keys
원격 시스템에서.이렇게하면 컴퓨터의 개인 키에 액세스 할 수있는 모든 사람에게 원격 컴퓨터에 대한 동일한 액세스 권한이 부여되므로 키 페어를 생성 할 때 추가 보안을 위해 여기에 비밀번호를 입력하도록 선택할 수 있습니다.
Windows 사용자가 PuTTY를 설정하려면
다른 사람들이 말한 것을 요약하면 SSH 키를 설정하는 것이 쉽고 중요합니다.
SSH를 수행 할 머신에서 from 키 쌍을 생성해야합니다.
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db [email protected]
표시된 곳에서 Enter 키를 누르고 프롬프트가 표시되면 암호를 입력하십시오. 이상적으로 이것은 현재 호스트 및 SSH를 연결할 호스트의 일반 로그인 비밀번호와 다릅니다.
다음으로 방금 생성 한 키를 SSH to하려는 호스트에 복사해야합니다. 대부분의 Linux 배포판에는 ssh-copy-id
이것을하기위한 :
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
배포판에없는 경우 키를 대상 호스트에 복사하여 (아마도 존재하는) .ssh/authorized_keys
파일 :
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
마지막으로 SSH 키를 최대한 활용하려면 SSH 에이전트를 실행해야합니다. 데스크탑 환경 (Gnome, KDE 등)을 사용하는 경우 로그 아웃했다가 다시 로그인하면 SSH 에이전트가 시작됩니다. 그렇지 않으면 Shell RC 파일에 다음을 추가 할 수 있습니다 (.bashrc
, .profile
등) :
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
이것은 체크리스트를위한 것입니다. 점을 따르는 경우 암호없는 로그인에 대한 가장 일반적인 문제를 다뤄야합니다. 이러한 요점의 대부분은 다른 곳에서 언급됩니다. 이것은 집계입니다.
연결을 시작하거나 수신 할 계정으로 각 머신에 ~/.ssh
디렉토리 chmod 700
가 있어야합니다.
(비공개) 키는 암호없이 생성되거나 클라이언트가 사용할 암호 구문 키의 암호 해독 된 버전을 보유하는 에이전트를 시작할 수 있습니다. ssh-agent $Shell
로 에이전트를 시작하십시오. $Shell
부분을 찾는 데 시간이 걸렸습니다. 에이전트를 사용하려면 다양한 세부 정보가 있으므로 매뉴얼 페이지를 참조하십시오.
최근 버전의 sshd에서는 기본적으로 약한 (<2048 비트 DSA) 키를 사용할 수 없습니다.
클라이언트 쪽 컴퓨터에서 다음을 수행하여 originate 연결을 수행해야합니다.
개인 키는 적절하게 ~/.ssh/id_rsa
또는 ~/.ssh/id_dsa
에 있어야합니다. 다른 이름을 사용할 수도 있지만 개인 키를 명시 적으로 나타내려면 원래 시스템의 ssh 명령에서 -i 옵션에 포함시켜야합니다.
개인 키는 chmod 600
여야합니다.
홈 폴더가 chmod 700
인지 확인하십시오.
이제 기계가 요청을 수신하도록 허용합니다. 일반적인 모델은 관리자가 소유하지 않은 컴퓨터 (예 : 공유 웹 호스팅)에 대한 액세스 권한을 부여하는 곳입니다. 따라서 ssh의 아이디어는 계정을 제공하는 사람에게 public 키를 제공한다는 것입니다. 그렇기 때문에 일반적으로 요청을받는 컴퓨터에 개인 키를 넣지 않습니다. 그러나이 시스템이 발신 ssh도 수행하도록하려면 위 단계를 수행하여 원래 시스템으로 취급해야합니다.
~/.ssh/authorized_keys
라는 파일에 있어야합니다. 이 계정을 통해 연결할 수있는 다른 키도 여기에 배치 할 수 있습니다. vi에 있고 PuTTY의 붙여 넣기 버퍼에서 파일에 키를 붙여 넣는 경우 특히 까다로운 점은 다음과 같습니다. 키는 "ssh-"로 시작합니다. 삽입 모드가 아닌 경우 첫 번째 "s"는 vi를 삽입 모드로 설정하고 나머지 키는 잘 보입니다. 그러나 키 시작 부분에 "s"가 없습니다. 그것을 찾는 데 며칠이 걸렸습니다.chmod 600 ~/.ssh/authorized_keys
를 좋아합니다. g-w 이상이어야합니다.여기에는 좋은 조언이 있으므로 반복하지 않겠습니다. 키로 사인온 할 수 있도록 하나의 서버를 설정 한 후에는이 하나의 라이너로 다른 서버도 동일하게 설정할 수 있습니다.
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
홈 디렉토리로 cd하고 변수 remote를 하나 이상의 서버 이름으로 정의하고 한 번에 한 묶음을 수행하십시오. 요청한 비밀번호는 원격 서버의 ssh 비밀번호입니다. 물론 for-loop없이 단순화 된 버전을 사용할 수 있습니다.
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
기억할 사항 : 공개 키만 복사하십시오. Sudo를 가진 사람이 누구나 암호를 복사하고 무차별 암호를 강제로 지정할 수있는 일부 서버에 개인 키를 두지 않기를 바랍니다.
다른 사람들이 말했듯이 사용자는 ssh-keygen을 사용하여 클라이언트 컴퓨터에서 자신을 위해 키 쌍을 만들고 공개 키를 로그인하려는 컴퓨터의 ~/.ssh/authorized_keys에 추가해야합니다.
자세한 내용은 SSH, The Secure Shell 을 권장합니다.