SSH Protocol
SSH 는 Secure Shell의 약자이다. 즉, 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜이다. VPN을 구성하는 것보다 가격이 저렴하고 쉽게 연결할 수 있어 많이 사용된다.
SSH 프로그램 중 내가 많이 쓰는 프로그램은 PuTTy 다.
MacOS에는 OpenSSH 클라이언트와 서버가 내장되어 있기 때문에 바로 사용할 수 있다.
SSH는 22번 포트 를 사용하며, 크게 다음의 3가지를 제공한다.
1. Authentication
SSH는 public key와 private key를 사용하는 비대칭 암호방식을 사용합니다.
간단히 설명하면, public key와 private key가 모두 있어야 인증이 되는 방식입니다.
각자 private key는 외부 유출없이 가지고 있고, public key만 네트워크를 통해 전달합니다.
SSH는 RSA, DSA 등 다양한 인증 방식을 지원합니다.
2. Encryption & Integrity
SSH는 네트워크를 통해 전달되는 데이터를 암호화합니다.
SSH는 네트워크를 통해 받은 데이터가 변경되지 않았음(무결성)을 보장해줍니다.
이를 위해 MAC(Message Authentication Code) 이라는 알고리즘을 사용합니다.
MAC 알고리즘은 다음과 같이 동작합니다.
SSH 클라이언트가 서버로 메세지를 보내면, MAC 알고리즘을 통해 secret key를 입력받아 MAC 코드를 생성합니다.
그리고, 임의 길이의 암호화 된 메시지와 MAC 코드를 SSH 서버로 보냅니다.
서버에서는 다시 메세지와 서버의 secret key를 조합하여 MAC 코드를 만들고,
클라이언트로부터 받은 MAC 코드와 비교하여 인증을 진행하게 됩니다.
3. Compression
SSH는 네트워크 상에서 데이터를 전송하고 수신할 때 압축 과정을 거칩니다.
이를 통해 전송 데이터의 크기를 줄여 네트워크 비용을 낮출 수 있습니다.
SSH Tunneling
SSH Tunneling은 터널을 통해 데이터를 주고받는다 해서 붙여진 이름입니다.
앞서 얘기했던 것처럼 연결, 통신은 모두 암호화되며 SMTP, IMAP 등 여러 가지로 사용될 수 있습니다.
Direct로 보내면 네트워크 층에서 수 많은 공격을 받을 수 있기 때문에 SSH를 통해 다른 Application에 연결하는 것이 안전합니다. SSH Tunneling에는 다음과 같이 두 가지 방법이 있습니다.
https://swalloow.github.io/ssh-tunneling
'대학원 공부 > computer science' 카테고리의 다른 글
Big Data : Spark : SparkSession (0) | 2019.11.23 |
---|---|
Big Data : Spark : findspark package (0) | 2019.11.23 |
git & github : branch (0) | 2019.11.11 |
git & github : git add, commit 취소하기, commit message 수정 (0) | 2019.11.11 |
Network : Background : 상식 (0) | 2019.10.31 |
댓글