[PUTTY]Password 인증없이 서버에 접속하기!!!(SSH2지원)

지리즈의 이미지

원래 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 파일에 등록하면..
지연속도를 줄일 수 있다.

Forums: 
bugiii의 이미지

Quote:

Putty나름대로... SSH2에서도 PuttyGen을 이용하여 Private키를 생성하여
접속을 가능하게 하여고 했으나.. 아직까지는 개발이 진행되지는 않았다.

PuTTYgen에서 SSH2 RSA 키 만들어서 서버들 접속을 하고 있는데, 이렇게 하면 안되는 이유가 있는건가요? PuTTYgen에서 만들면 뭔가 안좋은게 있어서 변환해서 사용하시는건지 제가 하고 있는 방식이 잘못된건지 내심 불안합니다.

김충길의 이미지

주의할것이 있습니다.

Quote:

~
~/.ssh
~/.ssh/authorized_keys

위 3개의 디렉토리가 group, other 에 대해서 읽기, 실행 모드가
없어야 합니다(당연히 쓰기도).

만약 데몬이 ssh2 라면 디렉토리 구성이 약간 틀려집니다.

Quote:

~/.ssh2
~/.ssh2/authorization

authorization 파일에서는 각 pub 키를 가진 파일명을 나열합니다.(자세한 사항은 man ssh2의 $HOME/.ssh2/authorization 항목 참조)

$ cat authorization
Key home.pub
Key office.pub

screen + vim + ctags 좋아요~

netj의 이미지

bugiii wrote:
PuTTYgen에서 SSH2 RSA 키 만들어서 서버들 접속을 하고 있는데, 이렇게 하면 안되는 이유가 있는건가요? PuTTYgen에서 만들면 뭔가 안좋은게 있어서 변환해서 사용하시는건지 제가 하고 있는 방식이 잘못된건지 내심 불안합니다.

원글 쓰신 분이 어떤 버전의 PuttyGen을 쓰고 계시길래 안되는 것인지는 모르겠지만, 적어도 0.53b의 PuttyGen에서는 SSH2 RSA/DSA 키 생성이 잘 됩니다. 개인 키를 네트웍을 통해서 옮기는 것은 유출 가능성 때문에 (아무리 SSH를 통해서 나르더라도) 좋지 않으므로 사용하실 컴퓨터 자체에서 생성하는 것이 가장 안전합니다. 공개 키들만 OpenSSH나 ssh.com 서버의 형식으로 내보내서 등록하고 쓰는 것이 좋겠죠. 결론은, 어차피 Putty를 쓰실거라면 bugiii님처럼 로컬에서 PuttyGen으로 모든 걸 다 하시는 것이 최선. :)

지리즈의 이미지

netj wrote:
bugiii wrote:
PuTTYgen에서 SSH2 RSA 키 만들어서 서버들 접속을 하고 있는데, 이렇게 하면 안되는 이유가 있는건가요? PuTTYgen에서 만들면 뭔가 안좋은게 있어서 변환해서 사용하시는건지 제가 하고 있는 방식이 잘못된건지 내심 불안합니다.

원글 쓰신 분이 어떤 버전의 PuttyGen을 쓰고 계시길래 안되는 것인지는 모르겠지만, 적어도 0.53b의 PuttyGen에서는 SSH2 RSA/DSA 키 생성이 잘 됩니다. 개인 키를 네트웍을 통해서 옮기는 것은 유출 가능성 때문에 (아무리 SSH를 통해서 나르더라도) 좋지 않으므로 사용하실 컴퓨터 자체에서 생성하는 것이 가장 안전합니다. 공개 키들만 OpenSSH나 ssh.com 서버의 형식으로 내보내서 등록하고 쓰는 것이 좋겠죠. 결론은, 어차피 Putty를 쓰실거라면 bugiii님처럼 로컬에서 PuttyGen으로 모든 걸 다 하시는 것이 최선. :)

그랬군요. :oops:

There is no spoon. Neo from the Matrix 1999.

지리즈의 이미지

제가 redhat 7.3버전만 사용하다보니... 이런 사실을 몰랐던 것 같습니다.
근데.. redhat 7.3버전에서(물론 up2date로 업그레이드를 한상태라도)
$HOME/.ssh2라던가, authorization 등을 지원하지 않는군요...
심지어면. man ssh2도 "No manual entry for ssh2"입니다. :(

아마도.. 8이나 9는 지원하는지 모르겠군요.. 흠...

위 팁은 "레드헷 7.3 사용자를 위한" 이라는 단서를 붙여야 할 것 같습니다.

김충길 wrote:
주의할것이 있습니다.
만약 데몬이 ssh2 라면 디렉토리 구성이 약간 틀려집니다.
Quote:

~/.ssh2
~/.ssh2/authorization

authorization 파일에서는 각 pub 키를 가진 파일명을 나열합니다.(자세한 사항은 man ssh2의 $HOME/.ssh2/authorization 항목 참조)

$ cat authorization
Key home.pub
Key office.pub

There is no spoon. Neo from the Matrix 1999.

lica619의 이미지

제 생각에 .ssh2가 없거나 하는것은 레드햇 7.3만의 경우가 아니라 저의 경우 레드햇 9을 쓰는데 똑같이 .ssh2라든가 authorization이라든가 하는 파일은 없더군요. 이 파일들은 openssh가 아닌 ssh.com의 ssh2 product를 사용할 경우 .ssh2안에 authorization안에 pub화일을 써 넣으면 되는것 같네요.

openssh에서 ssh1의 경우.ssh/authorized_keys 혹은 ssh2의 경우 authorized_keys2로 인증을 하는데 요즘에는 authorized_keys로 통합해서 쓴다고 하는군요. 저도 putty에도 자동로그인을 어떻게 하나 했었는데 이 글을 읽고 해보니 잘 되네요. 그리고 다른 분들이 얘기했듯이 putty내에서 puttygen으로 공개,개인키 생성하고 로그인하고자 하는 서버에 public key for pasting into openssh authorized_keys2 file: 이라고 되어 있는 내용을 authorized_keys안에 복사해 넣고 /etc/ssh/sshd_config안에

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

주석 풀어주시고 하면 잘 자동로그인되더군요...
관리적인 그리고 보안적인 측면에서 개개인 PC에서 puttygen으로 공개,개인키를 생성하고 사용하는것이 더 낫지 않을 까 하는 생각이 듭니다.

sunnmoon의 이미지

Quote:
주석처리되어 있으면 주석을 풀어주고, 없으면 추가해 놓은 후...
서버를 재시작하고.. 다시 위의 방법으로 시도해본다.

따라서 해봤는데 open 을 하면

Unable to use key file "ppk 로컬파일명" (PuTTY SSH-2 private key)

이렇게 나오더라고요... 주석처리 풀어주고 서버재시작 해야만 되는건가요?
재 시작이라 하시면 셧다운 하는것을 말씀하시는거죠?

잘 몰라서 여쭤봅니다 (_ _)

Romantic-Oriented Programming
http://sunnmoon.pe.kr

Romantic-Oriented Programming
http://sunnmoon.pe.kr

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.