Fundamental of CS/: : Network

SSH (Secure Shell)

Jay.P Morgan 2023. 11. 9. 23:55
SSH란?

SSH는 네트워크 상 다른 컴퓨터의 쉘에 접속하기 위해 사용하는 프로토콜이다.

기존 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화가 이루어지지 않아 계정 정보 노출 위험이 높으므로,

여기에 암호화 기능을 추가하여 1995년에 나온 프로토콜이다.

 

기본 포트는 22번으로, 셸로 원격 접속하는 것이므로 기본적으로 CLI상에서 작업을 하게 된다.

 

 

사용처

서버 관리자가 원격으로 서버를 관리할 때, RaspberryPI 등에 원격으로 접속하여 설정할 때 등.

내부 동작을 간단하게 알아보자면 SSH 서버인 데몬(daemon)이 있고, SSH 클라이언트가 접속을 시도하면 다음과 같은 순서가 진행된다.

  1. 서버와 클라이언트는 서로의 공개키(Public key)를 알고있다.
  2. 클라이언트가 서버에 연결 요청을 보내면 서로 인증을 한다.
  3. 양측간의 인증이 끝나면 비대칭키를 이용하여 대칭키를 교환한다. → 교환된 대칭키로 암호화가 진행되기에 SSH 연결은 매우 안전하다

클라이언트와 ssh서버 사이의 상호작용

 

SSH 클라이언트 프로그램

예전에는 SSH를 지원하는 터미널을 사용해야 SSH통신으로 서버에 접속할 수 있었지만, 현재 윈도우를 포함한 거의 모든 OS가 자체적으로 SSH를 지원하고 있다. (Windows 10의 경우 1809 업데이트 이후)

그래서 사실상 대부분의 터미널 프로그램에서 SSH 통신을 할 수 있다.

 

1. CMD(명령프롬프트), Windows Terminal, Linux Terminal,

2. Visual Studio Code, Sublime Text 등 : 텍스트 프로그램 내의 확장 기능(터미널 혹은 원격 개발 툴)을 설치

3. Xshell

4. PuTTY