From T3_KR_KNU
(→ssh public key authentication) |
(→public key 전송) |
||
(29 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== ssh public key authentication == | == ssh public key authentication == | ||
− | ssh public key 인증은 password 인증에 비해서 보다 안전하고 편리한 기능을 제공합니다. | + | * ssh public key 인증은 password 인증에 비해서 보다 안전하고 편리한 기능을 제공합니다. |
− | === | + | === Linux or Mac === |
==== key 생성하기 ==== | ==== key 생성하기 ==== | ||
− | + | * client에서 다음과 같이 key를 생성합니다. | |
− | + | ||
− | ssh-keygen -t rsa | + | $ mkdir ~/.ssh |
+ | $ chmod 700 ~/.ssh | ||
+ | |||
+ | $ ssh-keygen -t rsa | ||
Generating public/private rsa key pair. | Generating public/private rsa key pair. | ||
− | Enter file in which to save the key (/home/ | + | 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/ | + | Your identification has been saved in /home/userid/.ssh/id_rsa. |
− | Your public key has been saved in /home/ | + | Your public key has been saved in /home/userid/.ssh/id_rsa.pub. |
− | 반드시 passphrase를 입력하시기를 권장합니다. 올바르게 public key 인증 설정이 완료되었다면 앞으로 계정 생성때 만들어둔 패스워드가 아니라 지금 key 생성시 만든 패스워드를 이용하여 인증을 하게 됩니다. | + | * 반드시 passphrase를 입력하시기를 권장합니다. 매번 패스워드 입력없이 원격 서버에 접속하는 방법은 아래의 설명을 참고하세요. |
− | 따라서 단순히 패스워드만으로 인증되는 것보다, public key + private key + 패스워드 조합인 public key 인증방식이 더 높은 보안레벨을 제공하게 됩니다. | + | * 올바르게 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)는 관리에 각별한 주의가 필요합니다. |
==== 더 나은 암호화 레벨을 원한다면 ==== | ==== 더 나은 암호화 레벨을 원한다면 ==== | ||
− | 기본값인 2048 bit key보다 4096 bit key를 사용하여 암호화레벨을 올릴 수 있습니다. | + | * 기본값인 2048 bit key보다 4096 bit key를 사용하여 암호화레벨을 올릴 수 있습니다. |
− | ssh-keygen -t rsa -b 4096 | + | $ ssh-keygen -t rsa -b 4096 |
==== public key 전송 ==== | ==== public key 전송 ==== | ||
− | 접속하고자하는 서버에 public | + | * 접속하고자하는 원격 서버에 public key를 전송합니다. |
− | ssh-copy-id username@host | + | $ ssh-copy-id username@host |
− | 위의 명령은 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) 오류가 발생한다면 ==== | ||
~/.ssh/authorized_keys 파일의 퍼미션을 수정해줍니다. | ~/.ssh/authorized_keys 파일의 퍼미션을 수정해줍니다. | ||
− | + | $ chmod 700 ~/.ssh | |
− | + | $ chmod 600 ~/.ssh/authorized_keys | |
− | chmod 600 ~/.ssh/authorized_keys | + | |
− | ssh 접속시에 -v 옵션을 사용하면 더 자세한 debug 정보를 확인 할 수 있습니다. | + | * ssh 접속시에 -v 옵션을 사용하면 더 자세한 debug 정보를 확인 할 수 있습니다. |
− | ssh -v username@host | + | $ ssh -v username@host |
− | ==== ssh-agent 사용법 , ssh-agent로 패스워드 없이 서버에 접속하기 ==== | + | ==== ssh-agent 사용법 , ssh-agent로 패스워드 없이 원격 서버에 접속하기 ==== |
− | ssh- | + | * 위의 단계까지 설정이 정상적으로 끝났다면 원격서버에 접속할때 시스템에서 설정한 비밀번호가 아니라 위에서 key를 생성할때 입력한 비밀번호를 물어보게 됩니다. |
− | + | * ssh-agent를 사용하면 매번 패스워드를 입력할 필요없이 ssh-agent에서 패스워드 관리를 자동화해 줍니다. | |
− | + | * mac을 사용한다면 ssh-agent 를 사용할 필요가 없습니다. keychain에서 패스워드를 관리해 줍니다. | |
+ | $ ssh-agent $SHELL | ||
+ | $ ssh-add | ||
+ | $ ssh username@host | ||
− | .bash_profile 파일에 다음을 | + | * 매번 위의 작업을 실행하기 번거롭다면 .bash_profile 파일에 다음을 추가하세요. (This solution from Joseph M. Reagle by way of Daniel Starin) |
SSH_ENV="$HOME/.ssh/environment" | SSH_ENV="$HOME/.ssh/environment" | ||
Line 75: | Line 84: | ||
fi | fi | ||
− | === | + | === 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 생성 ==== | ||
− | PuTTYgen 를 실행시키고 Generate 버튼을 클릭하여 public key와 private key를 생성합니다. 이때 반드시 비밀번호를 입력해야합니다. | + | * PuTTYgen 를 실행시키고 Generate 버튼을 클릭하여 public key와 private key를 생성합니다. 이때 반드시 비밀번호를 입력해야합니다. |
+ | |||
+ | [[File:puttygen.png|500px]] | ||
==== private key 저장 ==== | ==== private key 저장 ==== | ||
− | 생성된 private key를 컴퓨터 내의 임의의 위치에 저장합니다. private key는 public key와는 달리 유출되지 않도록 반드시 주의해야 합니다. | + | * 생성된 private key를 컴퓨터 내의 임의의 위치에 저장합니다. private key는 public key와는 달리 유출되지 않도록 반드시 주의해야 합니다. |
==== public key 원격 서버 저장 ==== | ==== public key 원격 서버 저장 ==== | ||
− | public key를 원격서버에 ~/.ssh/authorized_keys 라는 파일이 없으면 해당 이름으로 저장하고, 해당 파일이 이미 존재한다면 public key의 내용을 마지막 라인에 추가합니다. | + | * public key를 원격서버에 ~/.ssh/authorized_keys 라는 파일이 없으면 해당 이름으로 저장하고, 해당 파일이 이미 존재한다면 public key의 내용을 마지막 라인에 추가합니다. |
==== putty 개인키 연동 ==== | ==== putty 개인키 연동 ==== | ||
− | Connection > SSH > Auth 카테고리를 선택해서 | + | * Connection > SSH > Auth 카테고리를 선택해서 |
− | Private key file for authentication | + | * Private key file for authentication: 항목에서 개인키 파일을 지정합니다. |
+ | |||
+ | [[File:puttyprivatekey.png|500px]] | ||
==== Pageant ==== | ==== Pageant ==== | ||
− | Pageant 는 ssh-agent와 동일한 기능을 합니다. Pageant을 실행한후 "Add Key" 실행해주세요. | + | * Pageant 는 ssh-agent와 동일한 기능을 합니다. Pageant을 실행한후 "Add Key" 실행해주세요. |
+ | |||
+ | [[File:pageant.png|500px]] |
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
PuTTYgen 을 이용한 key 생성
- PuTTYgen 를 실행시키고 Generate 버튼을 클릭하여 public key와 private key를 생성합니다. 이때 반드시 비밀번호를 입력해야합니다.
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: 항목에서 개인키 파일을 지정합니다.
Pageant
- Pageant 는 ssh-agent와 동일한 기능을 합니다. Pageant을 실행한후 "Add Key" 실행해주세요.