원래 ssh는 private_key와 public_key인증 및 ssh_agent를
이용하여 서버에 패스워드 인증없이 접속이 가능하다.
Putty도 SSH1에서는 이기능을 사용할 수 있는 것으로 알려졌다.
하지만, 보안상의 이유로 SSH1 키 인증은 사용을 꺼려지고 있다.
Putty나름대로... SSH2에서도 PuttyGen을 이용하여 Private키를 생성하여
접속을 가능하게 하여고 했으나.. 아직까지는 개발이 진행되지는 않았다.
단 Putty 0.53b의 Puttygen은 openssh에서 생성된 SSH2 private_key를
Putty 고유의 키로 변환하는 기능을 제공하는데..
이방식을 이용하면. SSH2로 Putty도 인증없이 접속이 가능하다!!!
1. Private_key 생성하기.
Putty로 일단 접속하고자 하는 서버에 접속을 한다.
그리고 다음과 같이 키를 생성한다.
[admin@ns admin]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
The key fingerprint is:
ff:a5:10:ad:c8:7a:4f:40:42:69:df:c3:00:d3:a3:5b admin@ns.foobar.net
[admin@ns admin]$
이 때 암호는 입력하지 않아도 된다. 나중에 따로 지정할 수 있기 때문이다.
자 생성된 Public Key를 authorized_keys로 옮기고..
서버가 키로 접속이 가능한지 테스트 해본다.
[admin@ns admin]$ mv .ssh/id_rsa.pub .ssh/authorized_keys
[admin@ns admin]$ ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 89:79:86:1b:cb:fc:a0:05:9c:65:88:b5:4c:1b:7f:c8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Last login: Sun Jan 11 00:43:26 2004 from 192.168.0.25
[admin@ns admin]$
자 다음과 같이 패스워드를 묻지 않고 접속이 가능하다면..
일단계 성공이다. 만약... 위의 방법으로 접속이 실패했다면...
sshd가 인증키로 인증을 허용하지 않기 때문이다.
이럴 경우.
sshd_config(보통은 /etc/ssh/sshd_config)에 다음 두줄이 포함되어 있는지 확인하자.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
주석처리되어 있으면 주석을 풀어주고, 없으면 추가해 놓은 후...
서버를 재시작하고.. 다시 위의 방법으로 시도해본다.
이부분에 관련된 자세한 내용은 아래의 링크를 참조해보라.
인증키 사용하기
2. Key를 가져와 Putty의 PPK로 변환하기..
자 psftp나 다른 ssh2 sftp가 지원되는 클라이언트로 생성한 private_key를 가져온다. 여기서는 putty와 함께 포함된 psftp를 사용했다.
C:\Program Files\HangulPuTTY>psftp admin@ns.foobar.net
사용자 이름 "admin"으로 시도합니다.
admin@ns.foobar.net 의 비밀번호:
Remote working directory is /home/admin
psftp> get ./.ssh/id_rsa
remote:/home/admin/.ssh/id_rsa => local:id_rsa
psftp>exit
C:\Program Files\HangulPuTTY>
이젠 puttygen을 이용하여 putty의 고유 개인키 포멧인 ppk로 변환할 차례이다. puttygen을 실행하면... 오른쪽 하단부분에 load라는 버튼이 보일 것이다.
그걸 클릭한 후.. 받아온 id_rsa파일을 열자. 파일형식이 ppk로 지정되어 있음으로... 모든 파일보기로 고쳐야 읽을 수 있을 것이다.
그럼 Succe... convert save어쩌고 하는 메세지 박스를 볼 수 있는데..
내용은 성공적으로 openssh 개인키를 가져오는 데 성공했고..
이 키를 사용하려면... 다시 ppk로 저장해야 한다는 내용을 설명하는 것이다.
자.. 이제.. load 및에 있는 save private key를 눌러...
Putty Private key=ppk로 저장한다.
이때 패스워드를 넣지 않으면.. 경고가 뜨는데..
개인의 취향대로 한다. 넣어둘 경우... pagent를 이용하면..
나중에 역시 패스워드 없이 접속이 가능해진다.
3. putty 설정..
여기서는 iputty(한글 Putty)를 기준으로 한다. 영어와 한글의 차이일뿐
100% 동일하리라 믿는다.
일단 putty를 실행시킨후,
호스트 이름과 저장된 세션에 적절한 내용을 입력한다.(물론 프로토콜은 ssh로 해야한다.!!!)
왼쪽의 하단 부분에 "접속" 을 클릭한다음.. 계정명을 입력한다.
입력했으면 "접속" 및의 SSH->인증을 클릭하고...
인증키 파일에 전에 생성한 ppk파일 경로를 지정한다.
다시 세션을 클릭한후.. 저장을 눌러 세션을 저장한다.
자 대망의 Password 인증없이 접속할 차례다.
떨리는 마음으로 열기을 눌러 보자!!!
약간의 지연과 함께... 다음과 같은 메세지가 나오면 성공한 것이다!!!
사용자 이름 "admin"으로 시도합니다.
에이전트로 인증되었습니다: 공개 키 "imported-openssh-key"
Last login: Tue Jan 13 03:05:24 2004 from 192.168.0.25
[admin@ns admin]$
만약 ... ppk에 암호를 지정했던 사람들은 암호를 물어 볼것이다.
그럴 경우 원 암호가 아니라, ppk에 지정된 암호를 입력하면...된다.
4. pagent를 이용하기.
이 부분은 ppk에 암호를 지정한 사람들에게만 해당된다.
pagent를 실헹하면 오른쪽 트레이에 모자를 쓴 putty의 아이콘이 등록된다.
오른쪽 마우스클릭하면.. addkey라는 것이 보일 것이다.
이를 클릭하면 키를 지정할 수 있는 창이 열린다.
해당 키를 지정하면.. 키의 암호를 묻는데...
이때 PPK의 암호를 입력한다.
그 다음 putty로 해당 세션으로 접속을 시도하면...
더이상 암호를 묻지 않는다.
자 putty로 서버를 관리하던 많은 사람들이여...
이제 보다 편리하게 서버를 관리하자!!..
끝으로 한글 putty를 개발하고 계신 perky님께 감사의 말씀을 드리면서...
ps..
추가로.. 아까 생성한 id_rsa.pub = authorized_keys도
재활용이 가능하다. 일단 psftp등으로 로컬로 복사받은 다음...
매 서버마다 위의 과정으로 매번 키를 생성하지 말고..
원격 접속이 필요한 서버에 pscp를 이용하여 복사해 넣으면 된다.
C:\Program Files\HangulPuTTY>pscp authorized_keys admin@anotherhost:.ssh/authorized_keys
아니면.. 생성된 호스트에서..[admin@ns admin]$scp ~/.ssh/authorized_keys admin@anotherhost:.ssh/authorized_keys
ps2
접속지연은 접속자의 호스트네임을 채크하는 것 때문에 그렇다.
접속자의 호스트네임 및 IP를 /etc/hosts 파일에 등록하면..
지연속도를 줄일 수 있다.
출처는 kldp?