티스토리 뷰

원격 리눅스 서버에 암호 입력 없이 로그인 할 수 있습니다.

간단한 3단계 절차를 진행하면 되는데

ssky-keygen 사용과 이 글에서 설명하고 있는 ssh-copy-id 입니다.
ssh-keygen 은 공용과 개인 키들을 생성합니다. 
ssh-copy-id 는 로컬호스트의 공용 키를 원격 호스트의 authorized_keys 파일에 복사합니다. ssh-copy-id 또한 알맞은 권한을 원격 호스트의 홈, ~/.ssh, ~/.ssh/authorized_keys에 부여합니다.

이 글은 또한 ssh-copy-id 사용과 ssh-copy-id와 ssh-agent를 함께 사용하는 방법의 3가지 소소한 귀찮음을 설명합니다.


단계 1: localhost 에서 ssh-key-gen 사용하여 public 과 private key들 생성

jsmith@local-host$ [주: 로컬호스트]

jsmith@local-host$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[엔터키]

Enter passphrase (empty for no passphrase): [엔터키]

Enter same passphrase again: [엔터키]

Your identification has been saved in /home/jsmith/.ssh/id_rsa.

Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub.

The key fingerprint is:

33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9 jsmith@local-host


단계 2: public key 를 원격 호스트에 ssh-copy-id 사용하여 복사

jsmith@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host

jsmith@remote-host's password:

"ssh 'remote-host’”로 서버에 로그인 시도하고 입장:

.ssh/authorized_keys

기대하지 않았던 키를 추가했는지 확인하십시오.

주: ssh-copy-id 는 키를 원격호스트의 .ssh/authorized_key 파일 내용에 추가합니다.


단계 3: 암호 입력 없이 원격 호스트에 로그인

jsmith@local-host$ ssh remote-host

Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2

[주: SSH는 암호를 묻지 않았습니다.]

jsmith@remote-host$ [주: 원격 호스트임]

위 3단계의 간단한 과정은 대개의 사례에서 작업을 마쳐야 합니다.

또한 미리 상세에서 openSSH 에서 openSSH로 암호 입력 없이 SSH와 SCP 수행에 대해 논의했었습니다.

SSH2 사용중이라면, 이전에 SSH와 SCP 수행에 대해 암호 없이 SSH2 에서 SSH2로, OpenSSH 에서 SSH2로, SSH2 에서 OpenSSH로 들을 논의했었습니다.


ssh-add/ssh-agent 에 따른 ssh-copy-id 사용


-i 옵션에 대해 값이 전달되지 않았을 때와 ~/.ssh/identity.pub 가 불가할 때면, ssh-copy-id 는 다음의 오류 메세지를 보여줄 것입니다.

jsmith@local-host$ ssh-copy-id -i remote-host

/usr/bin/ssh-copy-id: ERROR: No identities found

ssh-add를 사용하여 ssh-agent에 키를로드 한 경우 ssh-copy-id는 ssh-agent에서 키를 가져 와서 원격 호스트에 복사합니다. 즉, 옵션 -i를 ssh-copy-id에 전달하지 않으면 ssh-add -L 명령에 의해 제공되는 키를 원격 호스트에 복사합니다.

jsmith@local-host$ ssh-agent $SHELL

jsmith@local-host$ ssh-add -L
에이전트는 신원이 없습니다.

jsmith@local-host$ ssh-add
Identity added: /home/jsmith/.ssh/id_rsa (/home/jsmith/.ssh/id_rsa)

jsmith@local-host$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsJIEILxftj8aSxMa3d8t6JvM79DyBV
aHrtPhTYpq7kIEMUNzApnyxsHpH1tQ/Ow== /home/jsmith/.ssh/id_rsa

jsmith@local-host$ ssh-copy-id -i remote-host

jsmith@remote-host's password:

"ssh 'remote-host'"를 사용하여 시스템에 로그인 한 다음 체크인하십시오:

.ssh/authorized_keys

예상치 못한 추가 키를 추가하지 않았는지 확인하십시오.

[주: ssh-add -L로 나타나는 키를 추가합니다]


3가지 작은 ssh-copy-id 의 귀찮은 사항들

다음은 ssh-copy-id의 사소한 불편함입니다.

1. 기본 공개 키: ssh-copy-id는 ~ / .ssh / identity.pub를 기본 공개 키 파일로 사용합니다 (즉, 값이 옵션 -i에 전달되지 않은 경우). 대신 id_dsa.pub, id_rsa.pub 또는 identity.pub를 기본 키로 사용하시기 바랍니다. 즉, 이들 중 하나가 존재하면 원격 호스트에 복사해야합니다. 두 개 또는 세 개가 있으면 기본값으로 identity.pub를 복사해야합니다.

2. 에이전트에 신원 없음: ssh-agent 가 실행중일때 ssh-add -L 는 “The agent has no identities”를 반환하며 (즉, ssh-agent에 추가된 키가 없을경우), ssh-copy-id는 계속 “The agent has no identities” 메세지를 원격호스트의 authorized_keys entry에 복사할 것입니다.

3. authorized_keys에 중복 등록: 개인적으로 ssh-copy-id 가 원격호스트의 authorized_keys 중복 항목을 검증해주기를 바랍니다. 만약 ssh-copy-id를 로컬호스트에서 여러번 실행한다면, 원격호스트의 authorized_keys 파일에 복제 검사도 하지 않고 같은 키를 계속 추가할 것입니다. 중복 항목을 지니고도 모든것은 기대한대로 작동합니다. 그러나, authorized_keys 파일을 어지럽히지 않고싶습니다.


출처: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id

필자: RAMESH NATARAJAN,  작성: 2008년 11월 20일


댓글