[CentOS 8] SSH 접속

1. SSH (Secure Shell) 이란

ssh는 클라이언트가 원격으로 서버에 보안접속을 하기 위한 암호화 프로토콜이다.

1) 서버 인증 및 세션키 생성 과정

클라이언트는 자신이 올바른 서버에 접속하려는 건지 검증한다.

ssh 서버는 개인키와 공개키를 가지고 있다. 서버는 접속을 요청하는 클라이언트에게 공개키를 보내준다. 해당 공개키는 클라이언트의 ~/.ssh/known_hosts 에 저장된다.

클라이언트는 대칭키(세션키)를 생성하여 이를 서버의 공개키로 암호화한 후 전송한다.

서버는 자신의 개인키로 복호화하여 대칭키를 얻는다. 임의의 메세지를 대칭키로 암호화하여 클라이언트에게 전송한다.

클라이언트는 대칭키로 복호화하여 메세지를 획득하고 인증을 완료한다.

2) 클라이언트 인증 과정

서버 또한 자신에게 접근하려는 클라이언트를 검증하는 과정이 필요하다.

비밀번호를 통해 인증할 수 있지만, 보안상 권장되지 않는다.

대신 SSH 키페어를 통해 전자서명 방식을 이용해 안전한 인증을 할 수 있다.

클라이언트는 개인키와 공개키를 생성하고, 해당 공개키는 서버의 ~/.ssh/authorized_keys 에 저장되어 있는 상태이다.

클라이언트는 서버에 접속하기 위해 사용할 키 페어의 ID를 전송한다.

서버는 해당 ID에 매칭되는 공개키가 ~/.ssh/authorized_keys 파일 안에 있는지 확인한다.

존재한다면 서버는 난수값을 생성하고 공개키로 암호화하여 클라이언트에게 전송한다.

클라이언트는 개인키로 복호화하여 얻은 난수값으로 해시값을 계산하고 서버에게 전송한다.

서버 또한 난수값을 이용해 해시값을 계산하고, 클라이언트로부터 받은 값과 일치하는지 확인한다.

2. 전자서명 SSH 접속 구현

서버는 /etc/ssh/sshd_config , 클라이언트는 /etc/ssh/ssh_config 파일에서 SSH를 설정한다.

개인키 생성/전송

클라이언트는 ssh-keygen -t rsa 로 공개키와 개인키를 생성한다. 기본 설정경로로 생성한다면 ~/.ssh 디렉토리에 공개키는 id_rsa.pub 으로, 개인키는 id_rsa 로 생성된다.

id_rsa.pubscp 혹은 ssh-copy-id 로 서버에 전송한다. 이 때, 서버의 sshd_config 에서 PasswordAuthentication yes 로 설정되어 있어야 한다 (ssh를 이용해서 전송하는 거여서).

# scp ~/.ssh/id_rsa.pub root@192.168.111.100:~/.ssh/id_rsa.client.pub
혹은
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.100
(서버에 ~/.ssh/authorized_keys가 자동 생성된다)

접속

서버의 /etc/ssh/sshd_config 에서 PasswordAuthentication no 를 해준다.

클라이언트에서 자신의 개인키로 서버에 접속을 시도한다.

# ssh -i ~/.ssh/id_rsa root@192.168.111.100

서버의 공개키는 클라이언트의 ~/.ssh/known_hosts 에 저장되고, 서로 인증과정을 거쳐 접속이 완료된다.

카테고리:

업데이트:

댓글남기기