ssh public key 인증 만들기

Posted at 2008/05/21 15:33 // in Tips/Utility programs // by Daniel

리눅스 ssh v2 기준, 다른 서버로 접속할 때 암호 입력 안하고 하려면, 사용하는 방법.

은재님의 리눅스에도 있습니다. 봤던 기억이.(지금도 홈페이지 있는지 모름)

  1. public key 인증의 배경 지식

public key/ private key 인증방식의 원리는 이렇습니다.

암호화 하는 사람은 키를 두개 가지고 있습니다. 하나는 암호화와 복호화를 다 할 수 있고 다른 하나는 복호화만 할 수 있습니다.

암호화와 복호화를 다 할 수 있는 키를 개인키(private key)라고 하고 그건 자기만 갖고 있습니다.

복호화만 되는 키는 공개키(public key)라고 하고 이건 자기가 보낼 메시지를 받는 상대방에게 미리 전해줍니다.

물론 공개키가 가로채는 놈(hijacker)에 의해 알려지면 암호화된 메시지를 풀어볼 수 있겠지요.

그래서 공개키도 안전하게 미리 전달되도록 합니다. 이건 한번만 전송되니까 일단 가지고 있게 된 이후에는 문제 없겠지요

그래서 암호화된 메시지를 전달해주면 받은 쪽에서는 공개키로 풀어서 원래 메시지를 복구해냅니다.

public key

ssh의 public key 인증도 이런 방식을 사용한 방법중 하나입니다.

private key는 사용자가 가지고 있고, public key를 서버에 저장해둔 다음 이후 private key 인증만 미리 사용자 터미널에서 해 두면 서버에 접속할 때는 암호 입력 안하고 이 키를 가지고 통신합니다.


  1. private key, public key 쌍 만들기

    ssh-keygen이란 프로그램이 있습니다. man ssh-keygen 하면 설명을 볼 수 있습니다.

    하지만 일단 필요한 것은 그냥 ssh-keygen 을 실행하는 것 뿐

    [danielsong@chagall ~]$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/danielsong/.ssh/id_rsa):
    Created directory '/home/danielsong/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/danielsong/.ssh/id_rsa.
    Your public key has been saved in /home/danielsong/.ssh/id_rsa.pub.
    The key fingerprint is:
    ..... danielsong@chagall

    이렇게 .ssh란 디렉토리가 만들어지고 id_rsa와 id_rsa.pub 파일이 만들어집니다.

    여기서 id_rsa는 자기만 갖고 있을 파일이고 id_rsa.pub은 다른 서버에 배포할 파일입니다.

    [danielsong@chagall ~]$ ls -l .ssh
    합계 16
    -rw------- 1 danielsong danielsong 1675  5월 21 14:43 id_rsa
    -rw-r--r-- 1 danielsong danielsong  410  5월 21 14:43 id_rsa.pub

    .ssh 디렉토리의 권한은 다음과 같이 되어 있어야 합니다. 아니면 chmod 700 .ssh

    drwx------  2 danielsong danielsong  4096  5월 21 14:43 .ssh

  2. public key를 배포. authorized_keys

    접속할 서버를 봅시다. 거기 접속해서, .ssh 디렉토리가 있는 지 보고 없으면 만들고,

    authorized_keys 파일을 만듭니다. 권한은 다음과 같아야 합니다. 아니면 chmod 600 authorized_keys

  3. -rw------- 1 root root 1095 2008-04-01 18:16 authorized_keys

    열고서, 아까 id_rsa.pub 내용을 복사합니다.(키의 일부 내용은 생략했어요.)

    ssh-rsa ............B3..........................AAAQE.............oh+l3b37g0ZVfkRcne+fPMx9i4NoFtRrRyCTACZDXA4rAFXS4Kx3NGAanQOVR5k2etHJdJBfD6Jo4+0Oj+yTvCmhD33NkB5SJ50gknLggdkQn+BjwJVj3BSWF+96kT9z7/z/bxqYP7q17wpSse132XwfxRBXR1zkTiivpOQxuOawJMwoo8+6gU9Bgfej5bMZy5NbWjczkXJYZwkOcG7JCAGozXjX9fpJ48rwkJ/4IbuRpzM14LHK7HF29CC24URQSix5xvjQ0ZCcMyprbFL5xAFc+yoSZV9Y18wDFJgRmcagGLte2sESOWalSSYDU3xR2gs7XQ== danielsong@chagall

  4. 접속

    서버에 접속해봅니다.

    [danielsong@chagall ~]$ ssh root@test_target
    Last login: Wed May 21 13:06:30 2008 from 147......
    [root@test_target .ssh]#

크리에이티브 커먼즈 라이센스
Creative Commons License

이 글에는 트랙백을 보낼 수 없습니다