SSH( Secure Shell )는 원격 호스트에 접속하여 로그인, 원격 명령 실행, 파일 전송 등을 수행하기 위한 인터넷 프로토콜이다.
SSH 프로토콜은 기본적으로 server-client 모델에 기반한다.
따라서, SSH 사용을 위해서는 server 에 SSH 데몬과 client 에 SSH-client 가 설치되어 있어야한다.
SSH 의 경우 22번 포트를 사용하여 연결을 진행한다. 이후 client 에서 SSH 연결을 시도할 경우 다음 두가지 검증을 수행한다.
SSH 는 대칭키 방식
, 비대칭키 방식
, 해시 알고리즘
과 같은 암호화를 사용하여 client-server 간에 안전한 네트워크 서비스를 제공한다.
대칭키 방식
은 클라이언트-서버 간 전체 연결을 암호화에 사용되며,
비대칭키 방식
은 키 교환, 클라이언트 인증, 서버 인증에 사용되고,
해시 알고리즘
은 패킷의 무결성을 확인하기 위해 사용된다.
ssh 접속은 다음과 같은 4가지 과정을 거친다.
SSH 프로토콜은 기본적(Default)으로 TCP 22번 포트를 사용하여 통신한다.
클라이언트가 서버에 원격 접속하기 위해 서버의 TCP 22번 포트로 SSH 접속 요청을 보내는 것이 SSH 연결의 첫 단계이다.
서버는 클라이언트에게 서버가 지원하는 프로토콜의 버전을 응답으로 보내준다.
클라이언트는 서버가 지원하는 프로토콜의 버전 중 자신과 일치하는 것이 있다면 연결을 지속한다
server 가 client 로 부터 ssh 접속 요청을 받을 경우 자신의 public key 를 client 에게 전달한다.
client 는 server 로부터 전달받은 public key 를 known_hosts
파일에 저장해둔다.( linux: ~/.ssh/known_hosts
)
# ~/.ssh/config
HOST <접속시 사용할 server 이름>
HOSTNAME <ip> or <hostname>
USER <user>
IDENTITYFILE <path to pem file>[ ~/.ssh/id_rsa ]
[ref]
https://www.ssh.com/academy/ssh
https://limvo.tistory.com/21
https://it-eldorado.tistory.com/157