it-swarm-ko.tech

사용자 이름 / 비밀번호 대신 키를 사용하여 인증하도록 ssh를 어떻게 설정합니까?

사용자 이름/비밀번호 대신 키를 사용하여 사용자를 인증하도록 ssh를 어떻게 설정합니까?

34
ScArcher2

각 사용자에 대해 : ssh-keygen -t rsa를 사용하여 키 쌍을 로컬 컴퓨터에서 생성해야합니다 (rsadsa 또는 rsa1로 대체 할 수 있음) 이러한 옵션은 권장되지 않습니다). 그런 다음 공개 키 (id_rsa.pub)의 내용을 로그인중인 서버의 ~/.ssh/authorized_keys에 넣어야합니다.

27

나는 실제로 --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)이 사용됩니다.

23
Chris Bunch

흠, 이해하지 마십시오. 키를 만들고 시작하면됩니다. :) HOWTO 또한 비밀번호를 통한 로그인을 금지 할 수 있습니다. 예를 들어/etc/ssh/sshd_config :

PasswordAuthentication no
6
Node

이 작업은 매우 간단합니다. 여기서 에 대한 간단한 연습이 있습니다.

요점은 다음과 같습니다.

  • 운영 ssh-keygen 컴퓨터에서. 그러면 공개 키와 개인 키가 생성됩니다.
  • 공개 키의 내용을 복사하여 붙여 넣기 (예 : ~/.ssh/id_rsa.pub)에서 ~/.ssh/authorized_keys 원격 시스템에서.

이렇게하면 컴퓨터의 개인 키에 액세스 할 수있는 모든 사람에게 원격 컴퓨터에 대한 동일한 액세스 권한이 부여되므로 키 페어를 생성 할 때 추가 보안을 위해 여기에 비밀번호를 입력하도록 선택할 수 있습니다.

3
ConroyP

Windows 사용자가 PuTTY를 설정하려면

2
Gareth

다른 사람들이 말한 것을 요약하면 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
1
Drew Stephens

이것은 체크리스트를위한 것입니다. 점을 따르는 경우 암호없는 로그인에 대한 가장 일반적인 문제를 다뤄야합니다. 이러한 요점의 대부분은 다른 곳에서 언급됩니다. 이것은 집계입니다.

연결을 시작하거나 수신 할 계정으로 각 머신에 ~/.ssh 디렉토리 chmod 700가 있어야합니다.

(비공개) 키는 암호없이 생성되거나 클라이언트가 사용할 암호 구문 키의 암호 해독 된 버전을 보유하는 에이전트를 시작할 수 있습니다. ssh-agent $Shell로 에이전트를 시작하십시오. $Shell 부분을 찾는 데 시간이 걸렸습니다. 에이전트를 사용하려면 다양한 세부 정보가 있으므로 매뉴얼 페이지를 참조하십시오.

최근 버전의 sshd에서는 기본적으로 약한 (<2048 비트 DSA) 키를 사용할 수 없습니다.

클라이언트 쪽 컴퓨터에서 다음을 수행하여 originate 연결을 수행해야합니다.

  1. 개인 키는 적절하게 ~/.ssh/id_rsa 또는 ~/.ssh/id_dsa에 있어야합니다. 다른 이름을 사용할 수도 있지만 개인 키를 명시 적으로 나타내려면 원래 시스템의 ssh 명령에서 -i 옵션에 포함시켜야합니다.

  2. 개인 키는 chmod 600 여야합니다.

  3. 홈 폴더가 chmod 700인지 확인하십시오.

이제 기계가 요청을 수신하도록 허용합니다. 일반적인 모델은 관리자가 소유하지 않은 컴퓨터 (예 : 공유 웹 호스팅)에 대한 액세스 권한을 부여하는 곳입니다. 따라서 ssh의 아이디어는 계정을 제공하는 사람에게 public 키를 제공한다는 것입니다. 그렇기 때문에 일반적으로 요청을받는 컴퓨터에 개인 키를 넣지 않습니다. 그러나이 시스템이 발신 ssh도 수행하도록하려면 위 단계를 수행하여 원래 시스템으로 취급해야합니다.

  1. 공개 키는 연결이 수신 인 계정 아래의 ~/.ssh/authorized_keys라는 파일에 있어야합니다. 이 계정을 통해 연결할 수있는 다른 키도 여기에 배치 할 수 있습니다. vi에 있고 PuTTY의 붙여 넣기 버퍼에서 파일에 키를 붙여 넣는 경우 특히 까다로운 점은 다음과 같습니다. 키는 "ssh-"로 시작합니다. 삽입 모드가 아닌 경우 첫 번째 "s"는 vi를 삽입 모드로 설정하고 나머지 키는 잘 보입니다. 그러나 키 시작 부분에 "s"가 없습니다. 그것을 찾는 데 며칠이 걸렸습니다.
  2. chmod 600 ~/.ssh/authorized_keys를 좋아합니다. g-w 이상이어야합니다.
  3. 이제 호스트 지문을 캐시에 추가해야합니다. 머신 A로 이동하고 머신 B를 수동으로 ssh로 이동하십시오. "호스트 키 캐시에 ...를 추가 하시겠습니까?"와 같은 쿼리가 처음으로 나타납니다. 이 로그인을 사용하기 위해 스크립트 (예 : 스크립트)를 자동화하려는 경우 자동화에서 사용중인 ssh 클라이언트에이 프롬프트가 표시되지 않아야합니다.
1
Vic K

여기에는 좋은 조언이 있으므로 반복하지 않겠습니다. 키로 사인온 할 수 있도록 하나의 서버를 설정 한 후에는이 하나의 라이너로 다른 서버도 동일하게 설정할 수 있습니다.

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를 가진 사람이 누구나 암호를 복사하고 무차별 암호를 강제로 지정할 수있는 일부 서버에 개인 키를 두지 않기를 바랍니다.

0
Bruno Bronosky

다른 사람들이 말했듯이 사용자는 ssh-keygen을 사용하여 클라이언트 컴퓨터에서 자신을 위해 키 쌍을 만들고 공개 키를 로그인하려는 컴퓨터의 ~/.ssh/authorized_keys에 추가해야합니다.

자세한 내용은 SSH, The Secure Shell 을 권장합니다.

0
Neall