sshd 공개키로 암호 없이 연결하기

quest4i의 이미지

안녕하세요.

공개키를 이용하여 ssh 로 바로 연결하려고 합니다.

기본적인 설정은 다 하였습니다.

41 RSAAuthentication yes
42 #DSAAuthentication yes
43 PubkeyAuthentication yes
44 AuthorizedKeysFile .ssh/authorized_keys

sshd_config 파일은 위와 같이 설정하였고

ssh-keygen -t rsa 명령으로 공개키를 클라이언트의 .ssh/authorized_keys 파일에 저장하였습니다.

그런데 다음과 같이 퍼미션 에러가 납니다.
[cvs@cvstest .ssh]$ ssh -o passwordauthentication=no cvs@testlinux1
Permission denied (publickey,password,keyboard-interactive).

재밌는 건 ssh 설정을 한 서버의 해당 계정에 .ssh/authorized_keys 파일을 만들면
서버에서 서버로 암호 없이 로그인이 되는군요.
예를 들어서 설명하면 host1 에 ssh 서버 설정을 하고 user1 계정에 위와 같이 설정한다음
다음과 같이 접속하면
user1@host1 $ ssh user1@host1

암호 없이 바로 로그인이 됩니다. 그런데 authorized_keys 파일을 저장한 다른 호스트에서는
위에서 처럼 퍼미션 에러가 납니다.

CVS서버를 primary/secondary 서버로 설정할려면 위 설정이 필요한데 도저히 안되네요...

wish의 이미지

저도 정리가 잘 안되지만 무엇인가 좀 이상하네요 ^^

"ssh-keygen -t rsa 명령으로 공개키를 클라이언트의 .ssh/authorized_keys 파일에 저장하였습니다."

보통 공개키는 서버쪽에 저장되어야 합니다. 클라이언트 쪽에서 private 키를 씁니다. 즉 접속은 다음과 같은 과정으로 이루어집니다.

1) 클라이언트(접속하려고 하는) 쪽에서 public, private 키 페어를 만든다.
2) 생성된 public key 를 서버에 전송한다. private key 는 종류에 따라서 ~/.ssh/identity 혹은 ~/.ssh/id_rsa, ~/.ssh/id_dsa 에 저장해둔다.
3) 서버 쪽의 ~/.ssh/authlized_keys 파일에 public key 를 등록한다
4) 그리고 나서 클라이언트 쪽에서 private key 를 이용해서 서버에 접속한다.

이렇게 됩니다~

"재밌는 건 ssh 설정을 한 서버의 해당 계정에 .ssh/authorized_keys 파일을 만들면
서버에서 서버로 암호 없이 로그인이 되는군요.
예를 들어서 설명하면 host1 에 ssh 서버 설정을 하고 user1 계정에 위와 같이 설정한다음
다음과 같이 접속하면
user1@host1 $ ssh user1@host1
"

이게 잘 되는 이유는, 정상적인 작동이기 때문입니다. 앞에서도 말했듯이 키페어로 인증을 하려면 접속하려고 하는 측(클라이언트)가 자신이 가지고 있는 private 키를 사용해서 접속하면, 접속받는 측(서버)에서 공개키를 이용해서 인증합니다. 그런데 님께서는 이미 서버 호스트에서 개인키가 만들어져 있고, 공개키도 .ssh/authorized_keys 에 등록되 있으므로, 서버(접속하려는 측, 개인키 가지고 있음) 에서 서버(접속당하는 측, 공개키 등록되 있음) 연결이 정상적인 접속이 됩니다.

클라이언트 쪽에서 ssh-keygen 으로 키 페어를 만드시고 그걸 클라이언트의 authlized_keys 에 저장하신듯 한데, 그러면 서버 측에는 인증 정보가 없으니 접속이 안되는 것으로 보이구요. 만들어진 공개 키를 서버 측에 전송하셔서 서버 측 ./ssh/authlized_keys 에 등록하시면 잘 되실 것 입니다 ^^

ps : 공개키는 다른 사람이 봐도 상관 없으니, ftp, telnet 으로 전송하셔도 큰 문제는 없습니다~

mokyj의 이미지

이렇게 생각하면 이해하기 쉬울 것 같아요..

1) 클라이언트(접속하려고 하는) 쪽에서 public, private 키 페어를 만든다.
-> 열쇠점에 주문해서 열쇠와 자물쇠를 만든다.

2) 생성된 public key 를 서버에 전송한다. private key 는 종류에 따라서 ~/.ssh/identity 혹은 ~/.ssh/id_rsa, ~/.ssh/id_dsa 에 저장해둔다.
3) 서버 쪽의 ~/.ssh/authlized_keys 파일에 public key 를 등록한다
-> 자물쇠(public key)를 문에 설치하고, 열쇠(private key)는 자기가 갖고 있는다.

4) 그리고 나서 클라이언트 쪽에서 private key 를 이용해서 서버에 접속한다.
-> 열쇠(private key)를 자물쇠(public key)에 끼워서 맞으면 문을 열 수 있다.

공개키는 다른 사람이 봐도 상관 없으니,
-> 자물쇠는 맞는 열쇠가 없으면 열 수 없으니 모두에게 공개되어도 된다.

비유가 적절한지요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.