SSH (Secure Shell Protocol)
작동 원리 → 예시 github
사용자(Client)가 키를 생성하면 공개키(public key)와 개인키(private key)가 만들어진다.
공개키를 통신하고자 하는 컴퓨터(Server)에 복사하여 저장한다.
암호화 된 채널이 생성되면 이 키를 활용해 데이터를 암호화 복호화하여 주고 받게 된다.
⇒ 사용자와 서버는 각각의 키를 보유하고, 이 키를 이용해 상대를 인증한 뒤 안전하게 데이터를 주고 받게 되는 것.
SSHD (Secure Shell Protocol Daemon)
Daemon? 백그라운드에서 요청을 기다리는 프로그램
→ SSH의 연결을 받기 위해 대기하는 프로세스
따라서 우리가 본투비에서 수정해야 할 내용은 sshd_config(들어오는 설정)이다
(포트를 변경하고 외부 루트 로그인을 허용해야 하기 위해서!)
sudo ufw allow 4242 # 4242 포트 허용
sudo vim /etc/ssh/sshd_config # 포트 번호 변경 및 외부 루트 로그인 허용을 위해 파일 수정
sudo systemctl restart ssh # 다시 시작
systemctl status ssh #openssh 실행 여부와 포
Port Forwading
→ 특정한 포트로 들어오는 데이터 패킷을 다른 포트로 바꿔서 다시 전송하는 작업
네트워크 - 원격기기 사이 직접적으로 연결 시에 유용
HOST IP
: 127.0.0.1(localhost, 자기 자신) 또는 ifconfig | grep inet
의 값GuestIP
: hostname -I
의 값HOST PORT
: 5000(임의로 설정해줌)GUEST PORT
: 4242(앞서 가상머신에서 허용해 준 포트번호)$ ssh name@127.0.0.1 -p 5000 # ssh <사용자 이름>@<HOST IP> -p HOST PORT
TCP (Transmission Control Protocol)
→ 연결 지향적
→ 인터넷에서 데이터를 전송하기 위한 프로토콜.
→ 데이터의 신뢰성과 정확성을 보장하기 위해 설계됨
TCP는 데이터를 세그먼트 단위로 나누어 전송 → 각 세그먼트는 일련번호를 갖고 있어 순서대로 조립됨 → 수신 측에서 각 세그먼트를 확인 → 데이터 전송 중 손실된 패킷을 재전송하여 데이터의 완전성을 유지 (신뢰성 정확성 보장)
💡 Port forwading은 네트워크에서 패킷을 전달하는 것이므로 해당 패킷이 전송되는 프로토콜을 이해하는 것이 중요. port forwading 설정을 할때 **해당 포트가 TCP인지 UDP인지 체크 필요**UDP(User Datagram Protocol)
→ 비연결성 프로토콜
UDP는 데이트그램 단위(일련번호/확인응답 등의 추가 정보없이 데이터만을 포함) 데이터를 전송
데이터 전송의 신뢰성/정확성은 보장하지 않지만 빠른 전송과 적은 오버해드를 갖고 있어 실시간 스트리밍과 같은 애플리케이션에서 사용
⇒ TCP 와 UDP는 연결 지향성과 신뢰성 여부에서 차이 있음 TCP는 신뢰성 있는 전송을 위해 연결 후 데이터 확인 / UDP는 빠른 전송을 위해 추가 정보를 제외한 데이터만 전송