# port란?
- 포트는 “논리적인 접속장소”를 뜻하며, 인터넷 프로토콜인 TCP/IP를 사용할 때 클라이언트 프로그램이 네트워크 상의 특정 서버 프로그램을 지정하는 방법으로 사용한다
우리가 특정 서버에 접속하려면 URL이나 IP 주소를 입력하여 이것을 토대로 해당 서버가 있는 컴퓨터로 찾아간다
그런데 대부분의 컴퓨터에서는 여러 개의 프로그램이 동시에 실행되고 있어서,
이 여러개의 프로그램 중 어느 프로그램이 내가 접속하려는 프로그램인지 컴퓨터에게 알려주어야 한다
여기서 포트 번호는 어떤 프로그램에 접속 할 것인지 컴퓨터에게 알려준다
[IP address, Port] => IP address는 컴퓨터를 찾을 때 필요한 주소를 나타내며, Port는 컴퓨터 안에서 프로그램을 찾을 때를 나타내는 것이다
이 두 개를 이용하여 특정 컴퓨터의 프로그램을 이용할 수 있게 된다
#Telnet, SSH, FTP, SFTP
1. FTP (20번,21번)
20번 포트 : 데이터 전송
21번 포트 : FTP 제어
2. SFTP (22번)
암호화된 파일전송
3. SSH (22번)
컴퓨터 원격 로그인, 명령 실행, 파일 전송
4. Telnet (23번)
암호화 되지 않은 텍스트 통신
#SSH와 Telnet의 차이
SSH
인터넷과 같은 보안되지 않은 네트워크에서도 네트워크를 통해 데이터의 암호화된 형태로 정보를 공유하고 전송한다
--> 매우 안전한 프로토콜
Telnet
암호를 포함하는 일반 텍스트 형식으로 데이터를 전송하므로 누구든지 패킷을 스니핑하여 중요한 정보를 얻을 수 있다
--> 인증 정책 및 암호화 기술 사용 X
- SSH는 Telnet에 비해 더 안전하다.
- Telnet이 일반 텍스트로 데이터를 보내는 동안 SSH 는 데이터를 암호화한다.
- SSH는 인증을 위해 공개 키를 사용하지만 Telnet은 인증을 사용하지 않는다 .
(공개키 - 암호화와 복호화에 이용하는 키가 다른 방식)
- SSH는 Telnet에 비해 대역폭에 약간 더 많은 오버헤드를 추가한다.
(즉 SSH가 더 많은 추가 데이터(암호화 관련 정보)를 사용한다)
- Telnet은 거의 모든 용도에서 SSH로 대체되었다.
- Telnet은 LAN용으로 특별히 설계된 포트 23을 사용하는 반면, SSH는 기본적으로 포트 22에서 실행됩니다.
(LAN - 근거리 통신망)
#FTP와 SFTP의 차이
FTP
기본적으로 평문 통신을 사용하고 암호화되지 않아 보안상 취약하다
(계정 정보와 패스워드를 평문으로 전송)
SFTP
SSH 프로토콜을 사용하여 데이터 전송을 암호화하므로 보안성이 높다
- FTP는 호스트 간 파일 전송을 위한 보안 채널을 제공하지 않는 반면, SFTP는 호스트 간 파일 전송을 위한 보안 채널을 제공합니다.
(즉 SFTP는 암호화된 통신 경로 제공)
- FTP는 "파일 전송 프로토콜"을 나타내고 SFTP는 "SSH 파일 전송 프로토콜"을 나타냅니다.
- FTP는 2개의 채널을 사용하여 데이터를 전송하고, SFTP는 1개의 채널을 사용하여 데이터를 전송합니다.
(FTP - 제어 채널(명령 주고받는 용도) , 데이터 채널(파일 데이터 전송))
(SFTP - 하나에 채널에서 명령 전달 + 파일 전송 동시에)
- FTP는 암호화를 제공하지 않는 반면 SFTP는 데이터 전송을 위한 암호화를 제공합니다.
- FTP에는 직접 전송 방식이 있는 반면 SFTP에는 터널링 전송 방식이 있습니다.
(직접 전송 방식 - 평문 통신, 터널링 전송 방식 - 보안 터널)
#VMware 리눅스 Putty ssh 접속 (NAT + 포트 포워딩 방식)
1. 리눅스에 ssh 설치
sudo apt update
sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
--> active(running)이면 Ok
2. VMware 관리자 권한으로 실행
win 키 누르고 VMware Workstation Pro 찾기
우클릭하고 관리자 권한으로 실행
3. 상단 Edit 클릭 --> Virtual Network Editor 클릭
4. VMnet8 NAT 클릭 --> 아래 NAT Settings... 클릭 --> Add... 클릭


5. Host port : System에서 사용하는 번호(1~1024)를 제외한 그 외 번호 입력
Type : TCP
Virtual machine IP address : 자신 IP address
VIrtual machine port : 22
Description : ssh
--> OK하고 저장
--> 리눅스에서 ifconfig 로 자신의 IP주소 확인 가능

6. 방화벽 열기
sudo ufw allow [Host port에 쓴 숫자]
sudo ufw enable
sudo ufw status

7. Putty 실행
Host Name : 자신의 IP주소 입력
Port : 22
Connection type : SSH
Open 클릭
8. 로그인 창이 뜨고 자신의 리눅스 아이디와 비밀번호를 치면 성공

#리눅스 SFTP 사용해보기
ls - 원격 파일 목록(리눅스)
lls - 로컬 파일 목록(cmd)
pwd - 원격 현재 위치 확인
lpwd - 로컬 현재 위치 확인
get 파일명 - 원격 서버 -> 로컬 서버로 파일 전송
put 파일명 - 로컬 서버 -> 원격 서버로 파일 전송
1. cmd에서 sftp [user name]@[user ip]를 입력한다
2. 질문이 나오면 yes라고 입력하고 비밀번호를 입력하면 접속 성공
(yes 칠 때 원래 아무것도 안 나오니 안심하고 치면 된다)

- 명령어 get
1. ls로 (원격)디렉토리 확인

2. get [파일명]으로 파일 다운로드

3. lls(로컬)로 확인해보면 sftp_test.txt 파일이 저장된 것을 볼 수 있다

파일 내용을 로컬에서 확인해보고 싶으면
4. 원격 접속을 끊고 (bye 입력) type [파일명]을 입력하면 된다

- 명령어 put
- cmd에서 파일 만들 때 echo 명령어를 사용
1. lls(로컬)로 디렉토리 확인

2. put [파일명]으로 파일 보내기 (로컬 -> 원격)
3. ls -l로 파일 받아졌는지 확인 (원격)

'Study' 카테고리의 다른 글
| JS 기본 문법 (3) | 2025.07.21 |
|---|---|
| 객체지향 프로그래밍 개념 이해 (0) | 2025.06.05 |