[network]SSH란? (Secure Shell Protocol)
SSH란? Secure Shell Protocol
네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과같은 Public network통해
서로 통신할 때 보안적으로 안전하게 통신하기 위해 사용하는 프로토콜.
사용 예)
1. 데이터 전송
ex) Gitghub - 소스코드를 원격 저장소인 깃헙에 푸쉬할때 ssh활용해 파일 전송.
2. 원격제어
ex) AWS 와같은 클라우드 서비스. - AWS인스턴스 서버에 ssh통해 접속하여 해당 머신에 명령.
그렇다면 FTP 나 Telnet 등 다른 컴퓨터와 통신위해 사용되는 프로토콜과 차이점?
가장큰 이유는 보안이다.
예를들어 예로든 두 프로토콜을 통해 로그인 정보 등 민감한 정보를 주고받는다면 정보를 직접 네트워크를 통해 넘기기 때문에 누구나 해당정보를 열람할수 있어 보안에 상당히 취약하다.
반면 SSH는 먼저 보안적으로 안전한 채널을 구성한 뒤 정보를 교환하기 때문에 보안측면에서 우세하다.
클라이언트와 서버는 암호화되어있기 때문에 중간에 정보가 노출되어 데이터를 알 수 없다.
(맥과 리눅스는 기본적으로 설치되어 있으며, 윈도우는 PuTTY 나 Xshell을 통해 사용가능.)
SSH의 통신방법 : Private Key / Public Key
ssh는 다른 컴퓨터와 통신위해 접속 시 우리가 일반적으로 사용하는 비밀번호 입력을 통한 접속을 하지 않음.
기본적으로 한쌍의 Key (Private/ Public) 를 통해 접속하려는 컴퓨터와 인증과정을 거친다.
Public Key : 공개되어도 안전한 키. Public Key를 통해 메세지 전송 전 암호화를 한다. (복호화불가)
Private Key : 절대로 외부노출이 되어서는 안되는 키. 본인 컴퓨터 내부에 저장됨. Private Key를 통해 암호화된 정보를 복호화한다.
1. Public Key를 통해 정보 암호화 (복호화 불가)
2. Private Key를 통해 암호화된 정보 복호화
이러한 과정을 통해 서로 관계를 맺고 있는 Key라는 것이 증명되면 비로소 두 컴퓨터 사이에 암호화된 채널이 형성이 되어 Key 를 활용해 정보를 암호화/복호화 하며 데이터를 주고 받는다.
요약
- SSH: Secure Shell
- 원격 시스템에서 명령을 실행할 수 있도록 해주는 프로토콜이다.
- 주로 리눅스, 유닉스 시스템에서 사용된다.
- 암호화 기법을 사용하여 안전한 통신이 가능하다.
- 22번 포트를 사용한다.
SSH를 통해 다른 시스템에 접속하는 방법(클라이언트)
$ ssh UserName@HostName
$ ssh delspon@example.com
포트를 따로 설정해주고 싶다면 옵션만 붙이면 된다.
$ ssh -p 22 delspon@example.com