리눅스 기초 다지기 - 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. 클라이언트는 전달 받은 메시지를 자신의 비밀키를 이용해 복호화한다.

 

공개키와 비밀키 통신 과정

etc-image-0

 

서버 인증 

etc-image-1

 

 

사용자 인증

etc-image-2

 

 

ssh 공개키 인증 과정

etc-image-3

 

 

 

Mandatory Permission

etc-image-4

 

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