네트워크 프로토콜
- SSH - 원격 접속 프로토콜
- FTP - 원격 파일 전송 프로토콜
- SFTP - 원격 파일 전송 프로토콜
Secure Shell
SSH
SSH는 "Secure Shell"의 약자로, 원격으로 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.
✍️ 즉 원격으로 다른 컴퓨터에 접속하고 싶을 때 SSH를 사용하면 된다.
👨💻 개발자들은 주로 ssh로 원격으로 클라우드 컴퓨터에 연결해서, 명령어를 원격으로 클라우드에 전송하여 결과를 받는데 사용한다.
"Secure Shell" 어원
Secure:
안전한
Shell:
운영 체제에서 사용자가 컴퓨터와 상호작용하기 위한 환경을 나타낸다. 보통 명령어를 입력하여 컴퓨터에 명령을 내리고 프로그램을 실행하는 등의 작업을 수행한다.
아주 쉽게 예를 들면 아래와 같이 검은 창이 모두 Shell의 한 종류다.
📢 ssh 예시)
AWS 클라우드에 서버를 설치하고, 내 컴퓨터에서 클라우드 서버에 접속하고싶을 때 ssh로 연결한다.
SSH 사용 예시
- 데이터 전송
- 원격 제어
데이터 전송 | 원격 제어 |
Github에 코드 Push | AWS의 인스턴스 서버에 접속 |
SSH 구성요소 (Public Key & Private Key)
대칭키 암호화(Symmetric key algorithm)
컴퓨터를 원격으로 통신하기 위해서 ID와 비밀번호와 같은 인증시스템이 필요하다 (보안적으로 위험하기 때문에)
하지만 단순히 ID와 비밀번호를 사용하는 인증 방식은 상대적으로 보안을 뚫기 너무 쉽다.
그래서 ssh는 Private Key와 Public Key라는 것을 사용한다.
- 🔑 Public Key : 암호화 담당
- 외부에 노출되어도 비교적 안전한 Key
- 🔑 Private Key : 복호화 담당
- 외부에 노출되면 절대 안되는 Key.
◌ Public Key와 Private Key가 어떻게 인증되는지는 살짝 어렵기 떄문에 패스 (엄청난 수학적 방법이다.)
우리가 나의 컴퓨터로 다른 컴퓨터를 접속 할 때, 나의 컴퓨터에서 Public Key와 Private Key를 생성해야한다.
(ssh-keygen
명령어를 입력하면 자동으로 키 생성된다)
이를 통해 통신을 위한 나의 컴퓨터의 신원을 암호화 할 수 있다.
이 때 Public Key는 나의 컴퓨터의 신원을 암호화 한 것이고, Private Key는 암호화 된 나의 컴퓨터의 신원을 복호화 하는 역할을 한다.
그렇기 때문에 다른 컴퓨터에 Public Key를 저장해야한다.
아래의 이미지를 보면 쉽게 이해 할 수 있다.
예시) 내 컴퓨터를 AWS EC2에 연결 하고 싶을 경우
파일 전송 프로토콜
- FTP
- SFTP
File Transfer Protocol
FTP
FTP는 "File Transfer Protocol"의 약자로, 원격으로 파일을 전송하기 위한 프로토콜이다.
FTP는 데이터를 암호화하지 않아 전송에 있어서 보안에 상당히 취약하다.
이를 대체하기 위한 보안성이 강한 FTPS와 SFTP와 같은 안전한 버전들이 있음.
✍️ 즉 FTP는 파일 전송 프로토콜
FTP 포트 : 20, 21
FTP로 연결할 때는 20번 또는 21번 포트를 사용한다.
사용 예시)
내 컴퓨터에서 다른 서버로 파일을 전송하거나 다운로드 할 때 사용한다.
Secure File Transfer Protocol
SFTP
SFTP는 "Secure File Transfer Protocol"의 약자로, 원격으로 파일을 안전하게 전송하기 위한 프로토콜이다.
SFTP는 SSH (Secure Shell)를 기반으로 하며, 데이터 전송 중에 🔑암호화를 제공하여 보안을 강화한다.
✍️ 즉 SSH의 파일 전송 버전이라 생각하면 된다.
SFTP 포트 : 22
SFTP로 연결할 때는 22번 포트를 사용한다.
'네트워크' 카테고리의 다른 글
[AWS] CORS(Cross-Origin Resource Sharing)란? 아주 쉽게 정리 (feat. S3 버킷) (0) | 2024.02.10 |
---|---|
[네트워크] DNS 레코드 쉽게 정리 (CNAME 과 A Record 의 차이점, TTL) + Alias Record (feat. Route 53, CNAME과 Alias의 차이점) (0) | 2024.01.29 |
[네트워크] HDD와 SDD 비교 및 개념 쉽게 정리 (feat. RAM) (1) | 2024.01.23 |
[네트워크] SSH 키 만드는 법 (passphrase, fingerprint, randomart 용어들 쉽게 정리) (0) | 2024.01.19 |
[네트워크] Telnet(텔넷)이란? 아주 쉽게 정리&설명 (0) | 2024.01.17 |