SSH(Secure Shell)
SSH(Secure Shell)
시큐어 셸(Secure Shell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고
다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램
또는 그 프로토콜을 가리킨다. 기존의 rsh, rlogin, 텔넷 등을 대체하기 위해 설계되었으며,
강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공한다. 기본적으로는 22번 포트를 사용한다.
SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보인다.
SSH는 버클리 서비스들(rsh, rcp, rlogin, rexec)및 telnet, ftp 서비스를 좀 더 보안이 강화된 명령으로 대체하기 위해 만들었다.
1995년 핀란드의 Tatu Ylönen이 개발해 공개했고, 많은 반향을 일으켰다.
1995년 말 Ylönen은 SSH Communications Security사를 설립하고, 상용화되었다.
소스 코드는 공개되었지만 여러가지 제약이 있었다고 하는데, 이에 SSH 1.2.12 릴리즈를 기반으로 OpenSSH 프로젝트가 결성되고 BSD 라이선스로 개발하기 시작했다.
OpenSSH가 처음 선보인건 1999년 OpenBSD 2.6 릴리즈부터이다. 이후 계속 보완되어 오늘날에 이르게 되었다.
위키백과
SSH 는 결국 서로 통신을 할때 좀 더 안전하게 통신하게 위해 사용하는 프로토콜입니다.
대표적으로 사용하는 예는 데이터 전송과 원격제어가 있습니다.
보통 깃허브 Push 할때나 AWS EC2 사용할때 사용되곤합니다.
기존 Telnet 과 차이점
기존 Telnet 으로 사용하던, SSH로 접속하던간에 환경자체가 크게 달라지지는 않지만
SSH 를 사용하는 까닭은 Telnet이 치명적인 보안 결함이 있기 때문입니다.
Telnet 을 이용해 패킷을 보내게 될때 별도의 암호화가 되지않은채
전송되기때문에 패스워드나 다른 중요한 값들이 노출될 위험이 있습니다.
SSH 는 별도의 암호화가 된채로 전송되기 때문에 안전하다고 할수있습니다.
SSH 의 통신과정
SSH 는 다른 컴퓨터와 통신을 하기위해 접속을 할때 일반적으로 우리가 사용하는
비밀 번호 입력과 같은 접속은 하지않습니다.
SSH 는 한쌍의 Key 를 통해 접속하려는 컴퓨터와 인증과정을 거치게됩니다.
암호화는 가능하지만 복호화는 불가능한 Public Key 와
Public Key 로 암호화한 메세지를 Private Key 를 통해 복호화 할수있습니다.
이러한 Private Key와 Public Key를 통해 다른 컴퓨터와 통신을 하기 위해서
먼저 Public Key를 통신하고나서 로컬 컴퓨터에 저장합니다.
그리고 요청을 보내는 클라이언트 컴퓨터에서 접속 요청을 할 때 응답을 하는 서버 사이드 컴퓨터에
복사되어 저장된 Public Key와 클라이언트 사이드에 해당 Public Key와 쌍을 이루는 Private Key와 비교를 하여
서로 한 쌍의 Key인지 아닌지를 검사합니다.
이 과정을 통해 서로 올바른 Key 라는것이 증명이 된다면 두 컴퓨터 사이에 암호화된 채널이 형성되어 Key 를 이용해 서로 데이터를
주고 받을수 있게됩니다.
Reference
https://baked-corn.tistory.com/52
https://ko.wikipedia.org/wiki/%EC%8B%9C%ED%81%90%EC%96%B4_%EC%85%B8
https://jootc.com/p/201808031460