From T3_KR_KNU
Jump to: navigation, search
(linux or Mac)
(public key 전송)
 
(10 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
=== Linux or Mac ===
 
=== Linux or Mac ===
 
==== key 생성하기 ====
 
==== key 생성하기 ====
 +
* client에서 다음과 같이 key를 생성합니다.
 +
 
  $ mkdir ~/.ssh
 
  $ mkdir ~/.ssh
 
  $ chmod 700 ~/.ssh
 
  $ chmod 700 ~/.ssh
Line 11: Line 13:
  
 
  Generating public/private rsa key pair.
 
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/b/.ssh/id_rsa):
+
  Enter file in which to save the key (/home/userid/.ssh/id_rsa): <span style="color:#FF0000">[엔터]</span>
  Enter passphrase (empty for no passphrase):
+
  Enter passphrase (empty for no passphrase): <span style="color:#FF0000">[패스워드입력]</span>
  Enter same passphrase again:
+
  Enter same passphrase again: <span style="color:#FF0000">[패스워드입력]</span>
  Your identification has been saved in /home/b/.ssh/id_rsa.
+
  Your identification has been saved in /home/userid/.ssh/id_rsa.
  Your public key has been saved in /home/b/.ssh/id_rsa.pub.
+
  Your public key has been saved in /home/userid/.ssh/id_rsa.pub.
  
* 반드시 passphrase를 입력하시기를 권장합니다. 올바르게 public key 인증 설정이 완료되었다면 앞으로 계정 생성때 만들어둔 패스워드가 아니라 지금 key 생성시 만든 패스워드를 이용하여 인증을 하게 됩니다. 따라서 단순히 패스워드만으로 인증되는 것보다, public key + private key + 패스워드 조합인 public key 인증방식이 더 높은 보안레벨을 제공하게 됩니다.
+
* 반드시 passphrase를 입력하시기를 권장합니다. 매번 패스워드 입력없이 원격 서버에 접속하는 방법은 아래의 설명을 참고하세요.
 +
* 올바르게 public key 인증 설정이 완료되었다면 앞으로 계정 생성때 만들어둔 패스워드가 아니라 지금 key 생성시 만든 패스워드를 이용하여 인증을 하게 됩니다.  
 +
* 따라서 단순히 패스워드만으로 인증되는 것보다, public key + private key + 패스워드 조합인 public key 인증방식이 더 높은 보안레벨을 제공하게 됩니다.
  
 
* 공개되어도 상관없는 public key(~/ssh/id_rsa.pub)와는 달리 private key( ~/.ssh/id_rsa)는 관리에 각별한 주의가 필요합니다.
 
* 공개되어도 상관없는 public key(~/ssh/id_rsa.pub)와는 달리 private key( ~/.ssh/id_rsa)는 관리에 각별한 주의가 필요합니다.
Line 32: Line 36:
  
 
* 위의 명령은 public key 파일을 접속하고자 하는 서버의 ~/.ssh/authorized_keys 파일로 전송하는 것과 동일한 기능을 합니다.
 
* 위의 명령은 public key 파일을 접속하고자 하는 서버의 ~/.ssh/authorized_keys 파일로 전송하는 것과 동일한 기능을 합니다.
 +
 +
$ cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys’
 +
 +
* ssh-copy-id가 실행되지 않는다면 위의 명령어로 대체할 수 있습니다.
  
 
==== Permission denied (publickey) 오류가 발생한다면 ====
 
==== Permission denied (publickey) 오류가 발생한다면 ====
Line 42: Line 50:
 
  $ ssh -v username@host
 
  $ ssh -v username@host
  
==== ssh-agent 사용법 , ssh-agent로 패스워드 없이 서버에 접속하기 ====
+
==== ssh-agent 사용법 , ssh-agent로 패스워드 없이 원격 서버에 접속하기 ====
  
 +
* 위의 단계까지 설정이 정상적으로 끝났다면  원격서버에 접속할때 시스템에서 설정한 비밀번호가 아니라 위에서 key를 생성할때 입력한 비밀번호를 물어보게 됩니다.
 
* ssh-agent를 사용하면 매번 패스워드를 입력할 필요없이 ssh-agent에서 패스워드 관리를 자동화해 줍니다.
 
* ssh-agent를 사용하면 매번 패스워드를 입력할 필요없이 ssh-agent에서 패스워드 관리를 자동화해 줍니다.
 
* mac을 사용한다면 ssh-agent 를 사용할 필요가 없습니다. keychain에서 패스워드를 관리해 줍니다.
 
* mac을 사용한다면 ssh-agent 를 사용할 필요가 없습니다. keychain에서 패스워드를 관리해 줍니다.
Line 75: Line 84:
 
  fi
 
  fi
  
=== windows ===
+
=== Windows ===
 
==== putty ====
 
==== putty ====
 
* putty는 윈도우용 무료 ssh client 입니다. 다음 링크에서 관련 패키지를 다운로드 받을 수 있습니다.
 
* putty는 윈도우용 무료 ssh client 입니다. 다음 링크에서 관련 패키지를 다운로드 받을 수 있습니다.
  
 
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
 
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
 +
 +
[[File:puttyhomepage.png|500px]]
  
 
==== PuTTYgen 을 이용한 key 생성 ====
 
==== PuTTYgen 을 이용한 key 생성 ====

Latest revision as of 02:20, 29 December 2015

ssh public key authentication

  • ssh public key 인증은 password 인증에 비해서 보다 안전하고 편리한 기능을 제공합니다.

Linux or Mac

key 생성하기

  • client에서 다음과 같이 key를 생성합니다.
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/userid/.ssh/id_rsa): [엔터]
Enter passphrase (empty for no passphrase): [패스워드입력]
Enter same passphrase again: [패스워드입력]
Your identification has been saved in /home/userid/.ssh/id_rsa.
Your public key has been saved in /home/userid/.ssh/id_rsa.pub.
  • 반드시 passphrase를 입력하시기를 권장합니다. 매번 패스워드 입력없이 원격 서버에 접속하는 방법은 아래의 설명을 참고하세요.
  • 올바르게 public key 인증 설정이 완료되었다면 앞으로 계정 생성때 만들어둔 패스워드가 아니라 지금 key 생성시 만든 패스워드를 이용하여 인증을 하게 됩니다.
  • 따라서 단순히 패스워드만으로 인증되는 것보다, public key + private key + 패스워드 조합인 public key 인증방식이 더 높은 보안레벨을 제공하게 됩니다.
  • 공개되어도 상관없는 public key(~/ssh/id_rsa.pub)와는 달리 private key( ~/.ssh/id_rsa)는 관리에 각별한 주의가 필요합니다.

더 나은 암호화 레벨을 원한다면

  • 기본값인 2048 bit key보다 4096 bit key를 사용하여 암호화레벨을 올릴 수 있습니다.
$ ssh-keygen -t rsa -b 4096

public key 전송

  • 접속하고자하는 원격 서버에 public key를 전송합니다.
$ ssh-copy-id username@host
  • 위의 명령은 public key 파일을 접속하고자 하는 서버의 ~/.ssh/authorized_keys 파일로 전송하는 것과 동일한 기능을 합니다.
$ cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys’
  • ssh-copy-id가 실행되지 않는다면 위의 명령어로 대체할 수 있습니다.

Permission denied (publickey) 오류가 발생한다면

~/.ssh/authorized_keys  파일의 퍼미션을 수정해줍니다.
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
  • ssh 접속시에 -v 옵션을 사용하면 더 자세한 debug 정보를 확인 할 수 있습니다.
$ ssh -v username@host

ssh-agent 사용법 , ssh-agent로 패스워드 없이 원격 서버에 접속하기

  • 위의 단계까지 설정이 정상적으로 끝났다면 원격서버에 접속할때 시스템에서 설정한 비밀번호가 아니라 위에서 key를 생성할때 입력한 비밀번호를 물어보게 됩니다.
  • ssh-agent를 사용하면 매번 패스워드를 입력할 필요없이 ssh-agent에서 패스워드 관리를 자동화해 줍니다.
  • mac을 사용한다면 ssh-agent 를 사용할 필요가 없습니다. keychain에서 패스워드를 관리해 줍니다.
$ ssh-agent $SHELL
$ ssh-add
$ ssh username@host
  • 매번 위의 작업을 실행하기 번거롭다면 .bash_profile 파일에 다음을 추가하세요. (This solution from Joseph M. Reagle by way of Daniel Starin)
SSH_ENV="$HOME/.ssh/environment"

function start_agent {
    echo "Initialising new SSH agent..."
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} doesn't work under cywgin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

Windows

putty

  • putty는 윈도우용 무료 ssh client 입니다. 다음 링크에서 관련 패키지를 다운로드 받을 수 있습니다.

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Puttyhomepage.png

PuTTYgen 을 이용한 key 생성

  • PuTTYgen 를 실행시키고 Generate 버튼을 클릭하여 public key와 private key를 생성합니다. 이때 반드시 비밀번호를 입력해야합니다.

Puttygen.png

private key 저장

  • 생성된 private key를 컴퓨터 내의 임의의 위치에 저장합니다. private key는 public key와는 달리 유출되지 않도록 반드시 주의해야 합니다.

public key 원격 서버 저장

  • public key를 원격서버에 ~/.ssh/authorized_keys 라는 파일이 없으면 해당 이름으로 저장하고, 해당 파일이 이미 존재한다면 public key의 내용을 마지막 라인에 추가합니다.

putty 개인키 연동

  • Connection > SSH > Auth 카테고리를 선택해서
  • Private key file for authentication: 항목에서 개인키 파일을 지정합니다.

Puttyprivatekey.png

Pageant

  • Pageant 는 ssh-agent와 동일한 기능을 합니다. Pageant을 실행한후 "Add Key" 실행해주세요.

Pageant.png