리눅스 기초 다지기 - 09. ssh key

 

인증 과정

 

서버 인증

  1. 최초 클라이언트에서 서버로 ssh 접속 시, 접속 진행 여부(yes/no)를 물어본다.
  2. yes, 선택 시 서버의 /etc/ssh의 공개키 값을 클라이언트의 ~/.ssh/known_host에 추가한다.

사용자 인증

  1. ssh-keygen으로 비대칭키를 생성한다.
  • 비밀키: ~/.ssh/id_rsa
  • 공개키: ~/.ssh/id_ras.pub
  1. 서버의 ~/.ssh/authorized_keys 파일에 클라이언트의 공개키 값을 추가한다.
  2. 클라이언트는 서버의 공개키를 이용하여 암호화하여 메시지를 보낸다.
  3. 서버는 전달 받은 메시지를 자신의 비밀키를 이용해 복호화한다.
  4. 서버는 authorized_keys에 등록된 클라이언트의 공개키를 이용해 메시지를 암호화하여 보낸다.
  5. 클라이언트는 전달 받은 메시지를 자신의 비밀키를 이용해 복호화한다.

 

공개키와 비밀키 통신 과정

 

서버 인증 

 

 

사용자 인증

 

 

ssh 공개키 인증 과정

 

 

 

Mandatory Permission

 

https://superuser.com/questions/215504/permissions-on-private-key-in-ssh-folder

http://linuxcommand.org/lc3_man_pages/ssh1.html

 

 

패스워드 없이 로그인하기

# 암호화 알고리즘 선택 옵션
# -t [ dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa ]
ssh-keygen -t rsa

# 끝까지 엔터 반복(기본 설정)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/2mklwPx72YjTf6zD34Vcm/CkoFyWOHwg2oj8gYqjRs root@control
The key's randomart image is:
+---[RSA 3072]----+
|        . ..     |
|         =.      |
|        .o+.     |
|       .o +... o |
|  o . + So o +o o|
| + + o . .. = + +|
|E . o     .+ B.o.|
|.o .      ..*oBo.|
|.          oo*o=*|
+----[SHA256]-----+

 

 

~/.ssh 위치에 id_rsa, id_rsa.pub 파일이 생성된다.

 

 

사용자의 공개키를 노드에 ~/.ssh/authorized_keys 붙여 넣는 방법

ssh-copy-id node1
ssh-copu-id node2

 

ssh 접속 테스트

ssh root@node1
ssh root@node2

 

sshpass 이용한 원격 명령어 실행 방법

for i in node{1..2} ; do sshpass ssh root@$i yum install -y vim ; done