2026. 6. 14. 15:24ㆍ리눅스
Ⅰ. Telnet (Teletype Network)
| Telnet (Teletype Network) |
구분 | 설명 | |
| 개념 | 클라이언트가 원격 호스트에 접속해 키보드로 입력한 문자들을 실시간으로 전송하고, 원격 시스템의 텍스트 기반 쉘 (명령어 인터페이스)을 조작할 수 있게 해주는 원격 접속 서비스 |
||
| 기능 / 역할 | 원격 시스템에 명령어 기반 원격 관리 제공 | ||
| 터미널 세션을 통해 원격에서 즉시 명령 입력 및 실행 가능 | |||
| 프로토콜 | TCP 기반 통신 | ||
| 포트 | 기본 포트 23번 사용 | ||
| 데이터 전송 방식 | 전송되는 모든 문자 (입력, 출력)가 평문 (암호화되지 않은 텍스트)으로 네트워크 통해 오고감 | ||
| 보안 이슈 | 패스워드, 명령, 출력 등이 암호화되지 않아 패킷 스니핑 (중간에 가로챔)에 매우 취약 | ||
| 공개 네트워크 (Internet)에서는 사용 권장되지 않음 | |||
| 사용 예시 (명령) |
형태 | 예시 | |
| telnet <호스트> | ex) telnet 192.168.0.10 | ||
| telnet <호스트> <포트> | ex) telnet example.com 23 | ||
| 현대적 권장 대안 | 대안 | 설명 | |
| SSH (Secure Shell) | 모든 통신이 암호화되어 보안성 높음 | ||
| 기본 포트 22번 사용 | |||
| 운영상 권고 | 내부 실습 / 레거시 장비 점검 이외에는 Telnet 비활성화 권장 | ||
| 가능하면 서비스 제거 또는 방화벽으로 포트 23번 차단 | |||
| SSH로 전환 | |||

cat /etc/services | grep ^telnet 명령을 통해 서비스 포트 번호와 프로토콜 정보만 담고 있는
/etc/services 파일에서 telnet으로 시작하는 서비스 항목 검색
Ⅰ -Ⅰ.Telnet 패키지 설치, Telnet 활성화
- telnet-server 패키지는 Telnet을 활성화하는 애플리케이션
- telnet 패키지는 Telnet 접속을 위한 클라이언트 애플리케이션

Server1에 yum –y install telnet-server telnet 명령을 통해 Telnet을 활성화하는 애플리케이션인
telnet-server 패키지와 Telnet 접속을 위한 클라이언트 애플리케이션인 telnet 패키지 설치

Client1에 yum –y install telnet-server telnet 명령을 통해 Telnet을 활성화하는 애플리케이션인
telnet-server 패키지와 Telnet 접속을 위한 클라이언트 애플리케이션인 telnet 패키지 설치

rpm –qa telnet-server telnet 명령을 통해 시스템에 설치된 telnet-server와 telnet 패키지 검색
systemctl enable —now telnet.socket 명령을 통해
Telnet의 소켓 단위 서비스를 즉시 활성화하고 부팅 시 자동 시작하도록 설정
systemctl status telnet.socket 명령을 통해 현재 telnet.socket 서비스 상태 확인

rpm –qa telnet-server telnet 명령을 통해 시스템에 설치된 telnet-server와 telnet 패키지 검색
systemctl enable —now telnet.socket 명령을 통해
Telnet의 소켓 단위 서비스를 즉시 활성화하고 부팅 시 자동 시작하도록 설정
systemctl status telnet.socket 명령을 통해 현재 telnet.socket 서비스 상태 확인

netstat 명령을 통해 네트워크 소켓 상태와 프로세스 상태 확인
-n 옵션을 통해 IP 주소와 포트를 숫자 형태로 표시
-t 옵션을 통해 TCP 프로토콜 상태만 표시
-l 옵션을 통해 현재 서버 대기 상태 (LISTEN 상태)인 소켓만 표시
-p 옵션을 통해 어떤 프로세스가 해당 포트를 사용 중인지 표시

yum –y install wireshark 명령을 통해 네트워크 패킷 분석 도구인 Wireshark 설치
Ⅰ - Ⅱ. Telnet 접속 테스트

Client1에서 telnet 192.168.2.203 명령을 통해 Server1 IP 서버의 텔넷 서비스 23번 포트로 접속 시도
로그인 후 cat /etc/passwd 명령을 통해 시스템의 사용자 계정 정보를 담고 있는 /etc/passwd 파일의 내용 확인

netstat –ntp 명령을 통해 IP 주소와 포트를 숫자로 표시하고, TCP 연결만 필터링하며,
연결에 사용된 프로세스 정보를 통해 Client1에서 Server1로 Telnet을 통해 잘 연결되었는지 확인

w 명령을 통해 접속한 사용자 확인

systemctl disable —now telnet.socket 명령을 통해 Telnet 소켓 서비스 비활성화
systemctl status telnet.socket 명령을 통해 서비스가 잘 비활성화 되었는지 확인
Ⅱ. SSH (Secure Shell)
| SSH (Secure Shell) |
구분 | 설명 | |
| 개념 | 클라이언트가 원격 호스트에 접속하여 키보드로 입력한 문자들을 실시간으로 전송하고, 원격 시스템에서 명령을 실행할 수 있게 해주는 보안 원격 접속 서비스 |
||
| 기능 / 역할 | 텍스트 기반의 원격 명령어 실행 및 관리 제공 | ||
| 원격 파일 전송 (SCP / SFTP), 포트 포워딩 (터널링), 원격 명령 실행 등 기능 제공 | |||
| 프로토콜 | TCP 기반 | ||
| 포트 | 기본 포트 22번 사용 (포트 변경 가능) | ||
| 데이터 전송 방식 | 통신 내용 (인증 정보, 명령, 출력)이 암호화(encrypted) 되어 전송 -> 기밀성, 무결성, 인증 보장 |
||
| 사용 예시 (명령) |
예시 | 설명 | |
| ssh user@host | 원격 접속 | ||
| ssh -p 2222 user@host | 포트 지정 | ||
| scp file.txt user@host:/path/ | 파일 복사 (클라이언트 -> 서버) | ||
| sftp user@host | 대화형 파일 전송 | ||
| 주요 구성 파일 (서버) |
파일 | 설명 | |
| /etc/ssh/sshd_config | SSH 서버 설정 (포트, 루트 로그인 허용 / 로그안 비허용, 인증 방식 등) |
||
| 서비스 제어 (systemd) |
설명 | 예시 | |
| 시작 | sudo systemctl start sshd | ||
| 자동 시작 | sudo systemctl enable sshd | ||
| 상태 확인 | sudo systemctl status sshd | ||
| 인증 방식 | 방식 | 설명 | |
| 비밀번호 인증 (password) | |||
| 공개키 인증 (public key) (권장) |
ssh-keygen으로 키 생성 후, ~/.ssh/authorized_keys에 공개키 등록 |
||
| 보안 권장사항 | 공개키 기반 인증 사용 권장 (비밀번호 차단) | ||
| 루트 직접 로그인 비허용 (PermitRootLogin no) | |||
| 포트 변경, Fail2ban 등으로 공격 표면 축소 | |||
| 최신 OpenSSH 버전 사용 및 정기적 패치 | |||
| 확인 명령어 | 명령어 | 설명 | |
| ss-tlnp | 리스닝 포트 확인 | ||
| 장점 | 통신 내용이 암호화되어 보안성 우수 | ||
| 다양한 기능 (SCP / SFTP / 터널링)으로 관리, 전송, 포워딩 기능 제공 | |||
| 대부분의 리눅스 / 유닉스 / 윈도우 (서드파티) 환경에서 표준으로 용 | |||
Ⅱ - Ⅰ. SSH 패키지 설치, SSH 활성화 상태 확인

cat /etc/services | grep ^ssh 명령을 통해 서비스 포트 번호와 프로토콜 정보만 담고 있는
/etc/services 파일에서 ‘ssh’로 시작하는 서비스 항목 검색
systemctl status sshd 명령을 통해 SSH 데몬 (서버) 서비스인 sshd 현재 동작 상태 조회

netstat 명령을 통해 네트워크 소켓 상태와 프로세스 상태 확인
-n 옵션을 통해 IP 주소와 포트를 숫자 형태로 표시
-t 옵션을 통해 TCP 프로토콜 상태만 표시
-p 옵션을 통해 어떤 프로세스가 해당 포트를 사용 중인지 표시
Ⅱ - Ⅱ. SSH 접속 테스트

Client1에서 ssh user1@192.168.2.203 명령을 통해 Server1 IP 서버의 ssh 서버 22번 포트로 접속 시도
로그인 후 cat /etc/passwd 명령을 통해 시스템의 사용자 계정 정보를 담고 있는 /etc/passwd 파일의 내용 확인

netstat –ntp 명령을 통해 IP 주소와 포트를 숫자로 표시하고, TCP 연결만 필터링하며,
연결에 사용된 프로세스 정보를 통해 Client1에서 Server1로 SSH를 통해 잘 연결되었는지 확인

ls –l .ssh 명령을 통해 Client1의 홈 디렉터리 내 .ssh 디렉터리에 어떤 파일들이 있는지 상세 정보와 함께 확인
cat .ssh/known_hosts 명령을 통해
SSH 접속 시 서버의 공개키 정보를 저장하는 known_hosts 파일 내용 일부 확인

>.ssh/known_hosts 명령을 통해
.ssh/known_hosts 파일을 빈 파일로 만들어 기존에 저장된 서버 공개키 목록 모두 삭제
cat .ssh/known_hosts 명령을 통해 파일의 내용이 잘 삭제되었는지 확인
Ⅲ. SCP (Secure Copy Protocol)
| SCP (Secure Copy Protocol) |
구분 | 설명 | |
| 개념 | SSH 프로토콜 기반의 보안 파일 전송 서비스로 TCP 22번 포트를 사용하여 데이터를 암호화해 송수신 |
||
| 기능 / 역할 | 로컬과 원격 서버 간에 파일 또는 디렉터리 복사 (전송) | ||
| 데이터 전송 중 암호화로 보안성 확보 | |||
| 프로토콜 / 포트 | TCP 22번 포트 (SSH와 동일) | ||
| 보안 특징 | SSH 기반 암호화 전소응로 데이터 도청 및 변조 방지 | ||
| ID / 비밀번호 인증 또는 공개키 인증 지원 | |||
| 명령어 형식 | scp [옵션] [원본 경로] [대상 경로] | ||
| 사용 예시 | 설명 | 예시 | |
| 로컬 -> 원격 서버 업로드 | scp test.txt user@192.168.0.10:/home/user/ | ||
| 원격 서버 -> 로컬 다운로드 | scp user@192.168.0.10:/home/user/test.txt ./ | ||
| 디렉터리 전체 업로드 | scp -r /home/data user@192.168.0.10:/backup/ | ||
| 주요 옵션 | 옵션 | 설명 | |
| -r | 디렉터리 단위 전송 | ||
| -P [포트 번호] | SSH 포트 지정 | ||
| -p | 원본 파일의 권한 / 시간 정보 유지 | ||
| -C | 전송 시 압축 수행 (속도 향상) | ||
| 장점 | SSH 암호화를 통한 높은 보안성 | ||
| 간단한 명령으로 빠른 파일 전송 가능 | |||
| 단점 | 전송 중 중단 시 재개 불가 | ||
| 대용량 및 대규모 파일 전송에는 비효율적 (sync) 권장 | |||
| 대체 도구 | 도구 | 설명 | |
| SFTP | SSH 기반 대화형 파일 전송 도구 | ||
| RSYNC | 대용량 및 차등 동기화에 최적화된 고속 전송 도구 | ||

# test1, test2, test3, test4 디렉터리 생성
mkdir –p /test{1, 2, 3, 4} 명령을 통해 새로운 test1, test2, test3, test4 디렉터리 생성
(-p 옵션으로 인해 상위 디렉터리가 없을 경우, 함께 생성)
# test1 디렉터리 /etc/services 파일 내용 복사하여 scpfile1.txt, scpfile2.txt, scpfile3.txt, scpfile4.txt 파일 생성
cp /etc/services /test1/scpfile1~4.txt 명령을 통해 test1 디렉터리 내에
/etc/services 파일 내용 복사하여 scpfile1.txt, scpfile2.txt, scpfile3.txt, scpfile4.txt 파일 생성
# test2 디렉터리 /etc/services 파일 내용 복사하여 scpfile5.txt 파일 생성
cp /etc/services /test2/scpfile5.txt 명령을 통해 test2 디렉터리 내에
/etc/services 파일 내용 복사하여 scpfile5.txt 파일 생성
# test3 디렉터리 /etc/services 파일 내용 복사하여 scpfile6.txt, scpfile7.txt, scpfile8.txt, scpfile9.txt 파일 생성
cp /etc/services /test3/scpfile6~9.txt 명령을 통해 test3 디렉터리 내에
/etc/services 파일 내용 복사하여 scpfile6.txt, scpfile7.txt, scpfile8.txt, scpfile9.txt 파일 생성
# test4 디렉터리 /etc/services 파일 내용 복사하여 scpfile10.txt 파일 생성
cp /etc/services /test4/scpfile10.txt 명령을 통해 test4 디렉터리 내에
/etc/services 파일 내용 복사하여 scpfile10.txt 파일 생성
ls –l /test* 명령을 통해 ‘test’라는 이름으로 시작하는 디렉터리 내에 파일을 자세하게 확인

# Server1의 test1 디렉터리 scpfile1.txt 파일을 Client1 tmp 디렉터리에 복사
scp /test1/scpfile1.txt root@192.168.2.201:/tmp 명령을 통해 Server1의 /test1 디렉터리 내에 있는
scpfile1.txt 파일을 IP 주소가 192.168.2.201인 Client1의 /tmp 디렉터리에 복사
# Server1의 test1 디렉터리 scpfile2.txt 파일을 Client1 tmp 디렉터리에 복사
scp –P 22 /test1/scpfile2.txt root@192.168.2.201:/tmp 명령을 통해 포트 22번을 명시하여 Server1의 /test1
디렉터리 내에 있는 scpfile2.txt 파일을 IP 주소가 192.168.2.201인 Client1의 /tmp 디렉터리에 복사
# Server1의 test1 디렉터리 scpfile3.txt, scpfile4.txt 파일을 Client1 tmp 디렉터리에 복사
scp /test1/scpfile3.txt /test1/scpfile4.txt root@192.168.2.201:/tmp 명령을 통해
Server1의 /test1 디렉터리 내에 있는 scpfile3.txt 파일과 scpfile4.txt 파일을
IP 주소가 192.168.2.201인 Client1의 /tmp 디렉터리에 복사

ls –l /tmp/scp* 명령을 통해 Client1의 /tmp 디렉터리 내 ‘scp’로 시작하는 파일이 잘 복사되었는지 확인
rm –rf /tmp/scp* 명령을 통해 /tmp 디렉터리 내 ‘scp’로 시작하는 모든 파일 삭제
ls –l /tmp/scp* 명령을 통해 파일이 잘 삭제되었는지 확인

# Server1 test1 디렉터리 내 모든 파일을 Client1 tmp 디렉터리로 복사
scp /test1/* root@192.168.2.201:/tmp 명령을 통해 Server1의 /test1 디렉터리 내
모든 파일들을 IP 주소가 192.168.2.201인 Client1의 /tmp 디렉터리로 복사
# Server1 test2 디렉터리 내 모든 파일을 Client1 tmp 디렉터리로 복사
scp –r /test2 root@192.168.2.201:/tmp 명령을 통해 Server1의
/test2 디렉터리 전체를 IP 주소가 192.168.2.201인 Client1의 /tmp 디렉터리로 복사

ls –l /tmp/scp* 명령을 통해 Client1의 /tmp 디렉터리 내에 ‘scp’로 시작하는 파일들이 잘 복사되었는지 확인
ls –l /tmp | grep test2 명령을 통해 Client1의 /tmp 디렉터리 내에 test2라는 디렉터리가 존재하는지 확인
ls –l /tmp/test2 명령을 통해 Client1의 /tmp/test2 디렉터리 내에 파일이 잘 복사되었는지 확인

ssh root@192.168.2.203 ls /test3 명령을 통해 Client1에서
IP 주소가 192.168.2.203인 Server1의 /test3 디렉터리 내에 있는 파일 목록 확인
# Server1 test3 디렉터리 내 scpfile6.txt 파일을 Client1 tmp 디렉터리로 복사
scp root@192.168.2.203:/test3/scpfile6.txt /tmp 명령을 통해 IP 주소가 192.168.2.203인
Server1의 /test3 디렉터리 내에 있는 scpfile6.txt 파일을 Client1의 /tmp 디렉터리로 복사
ls –l /tmp/scp* 명령을 통해 scpfile6.txt 파일이 잘 복사되었는지 확인
# Server1 test3 디렉터리 내 scpfile7.txt, scpfile8.txt, scpfile9.txt 파일을 Client1 tmp 디렉터리로 복사
scp root@192.168.2.203:/test/scpfile{7, 8, 9}.txt /tmp 명령을 통해 IP 주소가 192.168.2.203인
Server1의 /test3 디렉터리에 있는 scpfile7.txtm scpfile8.txt, scpfile9.txt 파일을 Client1의 /tmp 디렉터리로 복사
ls –l /tmp/scp* 명령을 통해 scpfile7.txt, scpfile8.txt, scpfile9.txt 파일이 잘 복사되었는지 확인
# Client1 tmp 디렉터리 내에 있는 scpfile6.txt, scpfile7.txt, scpfile8.txt, scpfile9.txt 파일 삭제
rm –rf /tmp/scpfile{6, 7, 8, 9}.txt 명령을 통해 /tmp 디렉터리에 있는
scpfile6.txt, scpfile7.txt, scpfile8.txt, scpfile9.txt 파일 삭제
ls –l /tmp/scp* 명령을 통해 파일이 잘 삭제되었는지 확인

# Server1 test3 디렉터리 내 모든 파일을 Client1 tmp 디렉터리로 복사
scp root@192.168.2.203:/test3/* /tmp 명령을 통해 Server1의
/test3 디렉터리 내에 있는 모든 파일을 Client1의 /tmp 디렉터리 내로 복사
ls –l /tmp/scp* 명령을 통해 scpfile6.txt, scpfile7.txt, scpfile8.txt, scpfile9.txt 파일이 잘 복사되었는지 확인
# Server1 test4 디렉터리 내 모든 파일을 Client1 tmp 디렉터리로 복사
scp –r root@192.1686.2.203:/test4 /tmp 명령을 통해 IP 주소가 192.168.2.203인
Server1의 /test4 디렉터리를 전체를 Client1의 /tmp 디렉터리로 복사
ls –l /tmp | grep test 명령을 통해 Client1의 /tmp 디렉터리 내에 test라는 디렉터리가 존재하는지 확인
ls –l /tmp/test4 명령을 통해 scpfile10.txt 파일이 잘 복사되었는지 확인

# Client1 tmp 디렉터리 내에 있는 scp로 시작하는 모든 파일 삭제
rm –rf /tmp/scp* 명령을 통해 /tmp 디렉터리 내에서 scp로 시작하는 모든 파일 삭제
ls /tmp/scp* 명령을 통해 파일들이 잘 삭제되었는지 확인

# /test로 시작하는 모든 디렉터리 삭제
rm –rf /test* 명령을 통해 /test로 시작하는 모든 것 삭제
ls –l 명령을 통해 잘 삭제되었는지 확인

ls –l /etc/ssh/ 명령을 통해 SSH 관련 설정과 키 파일들이 위치한 디렉터리인 /etc/ssh의 파일 목록과 권한 확인
cat –n /etc/ssh/sshd_config 명령을 통해 SSH 데몬 설정 파일인 sshd_config 파일의 내용 확인

vi /etc/ssh/sshd_config 명령과 PermitRootLogin no 명령을 통해 보안을 강화하기 위해 Root 계정을 통한
직접 접속 차단하도록 SSH 데몬 설정 파일인 sshd_config 파일의 내용을 vi 편집기 사용하여 수정

vi /etc/ssh/sshd_config.d/01-permitrootlogin.conf 명령과 PermitRootLogin no 명령을 통해 보안을 강화하기 위해
Root 계정을 통한 직접 접속 차단하도록 01-permitrootlogin.conf 파일의 내용을 vi 편집기 사용하여 수정
Ⅳ. SFTP (Secure File Transfer Protocol)
| SFTP |
구분 | 설명 | |
| 개념 | SSH (Secure Shell) 프로토콜을 기반으로 한 보안 파일 전송 프로토콜로, 파일을 암호화하여 안전하게 업로드 및 다운로드할 수 있는 서비스 |
||
| 기능 / 역할 | SSH 세션을 통해 보안 채널에서 파일 송수신 수행 | ||
| 대화형 (Interactive) 방식으로 원격 파일 탐색 및 조작 가능 | |||
| 디렉터리 이동, 파일 이름 변경, 삭제 등 다양한 명령 지원 | |||
| 프로토콜 / 포트 | TCP 22번 포트 (SSH와 동일) | ||
| 보안 특징 | 전송 데이터 및 인증 절차 모두 암호화되어 안전함 | ||
| FRP와 달리 ID와 비밀번호가 평문으로 노출되지 않음 | |||
| 방화벽 통과 용이 (SSH 포트만 열면 됨) | |||
| 명령어 형식 | sftp [옵션] [사용자@호스트명] | ||
| 사용 예시 | 예시 | 설명 | |
| sftp user@192.168.0.10 | 원격 서버 접속 | ||
| put test.txt | 파일 업로드 | ||
| get data.csv | 파일 다운로드 | ||
| mput *.txt | 여러 파일 업로드 | ||
| mget *.log | 여러 파일 다운로드 | ||
| 주요 명령어 | 명령어 | 설명 | |
| ls | 파일 목록 보기 | ||
| cd | 디렉터리 이동 | ||
| mkdir | 디렉터리 생성 | ||
| rm | 파일 삭제 | ||
| pwd / lpwd | 원격 / 로컬 경로 확인 | ||
| exit | 종료 | ||
| 장점 | 보안성 높음 (SSH 암호화 기반) | ||
| 파일 탐색 및 조작 기능 다양 | |||
| 별도의 포트 설정 없이 SSH 환경에서 바로 사용 가능 | |||
| 단점 | CLI (명령어 기반) 환경에 익숙하지 않은 사용자는 불편 | ||
| 단순 명령 전송보다 대용량 전송 속도는 느림 | |||
| 대체 도구 | 도구구 | 설명 | |
| SCP | 단순한 파일 복사에 최적화 (비대화형) | ||
| RSYNC | 대용량 및 차등 백업 / 동기화에 효율 | ||

mkdir –p /test 명령을 통해 새로운 /test 디렉터리 생성
(-p 옵션으로 인해 상위 디렉터리 없을 경우, 함께 생성)
# /etc/services 파일 내용 복사하여 sftpfile1.txt, sftpfile2.txt, sftpfile3.txt, sftpfile4.txt 파일 생성
cp /etc/services /test/sftpfile1~4.txt 명령을 통해 /etc/services 파일의 내용을 복사한
sftpfile1.txt, sftpfile2.txt, sftpfile3.txt, sftpfile4.txt 파일 복사
ls –l /test 명령을 통해 /test 디렉터리로 sftpfile1.txt, sftpfile2.txt,
sftpfile3.txt, sftpfile4.txt 파일이 잘 복사되었는지 확인

# Server1 test 디렉터리 sftpfile1.txt 파일을 Client1 tmp 디렉터리로 복사
sftp root@192.168.2.203:/test/sftpfile1.txt /tmp 명령을 통해 IP 주소가 192.168.2.203인
Server1의 /test 디렉터리 내에 있는 sftpfile1.txt 파일을 Client1의 /tmp 디렉터리로 복사
ls –l /tmp/sftp* 명령을 통해 sftpfile1.txt 파일이 잘 복사되었는지 확인
# Server1 test 디렉터리 sftpfile2.txt, sftpfile3.txt, sftpfile4.txt 파일을 Client1 tmp 디렉터리로 복사
sftp root@192.168.2.203 << EOF \ get /test/sftpfile2.txt /tmp\ get /test/sftpfile3.txt /tmp\
get /test/sftpfile4.txt /tmp \ EOF 명령을 통해 IP 주소가 192.168.2.203인 Server1의
/test 디렉터리 내에 있는 sftpfile2.txt, sftpfile3.txt, sftpfile4.txt 파일을 Client1의 /tmp 디렉터리로 복사
ls –l /tmp/sftp* 명령을 통해 sftpfile2.txt, sftpfile3.txt, sftpfile4.txt 파일이 잘 복사되었는지 확인

# Client tmp 디렉터리에서 sftp로 시작하는 모든 파일 삭제
rm –rf /tmp/sftp* 명령을 통해 sftp로 시작하는 모든 파일 삭제
ls –l /tmp/sftp* 명령을 통해 파일이 잘 삭제되었는지 확인

# /etc/services 파일 내용 복사하여 sftpupload1.txt, sftpupload2.txt, sftpupload3.txt, sftpupload4.txt 파일 생성
cp /etc/services sftpupload1~4.txt 명령을 통해 /etc/services 파일의 내용을
sftpupload1.txt, sftpupload2.txt, sftpupload3.txt,sftpupload4.txt 복사하여 생성
ls –l sftp* 명령을 통해 sftp로 시작하는 파일이 잘 생성되었는지 확인

sftp root@192.168.2.203 명령을 통해 IP 주소가 192.168.2.203인 Server1에 root 계정으로 접속
cd /test 명령을 통해 Server1의 홈 디렉터리에서 Server1의 /test 디렉터리로 이동
pwd 명령을 통해 /test 디렉터리로 잘 이동했는지 확인
ls 명령을 통해 현재 디렉터리인 /test 디렉터리 내 파일 목록 조회
# Server1 sftpfile1.txt 파일 Client1로 복사
get stfpfile1.txt 명령을 통해 Server1의 sftpfile1.txt 파일을 Client1로 복사
# Server1 sftpfile로 시작하는 모든 파일 Client1로 복사
mget sftpfile* 명령을 통해 Server1에서 sftpfile로 시작하는 여러 파일을 Client1로 한 번에 복사
ls –l sftp* 명령을 통해 파일들이 잘 생성되었는지 확인
# Client1 sftpupload1.txt 파일을 Server1 test 디렉터리로 전송
put sftpupload1.txt 명령을 통해 sftpupload1.txt 파일을 Server1의 /test 디렉터리로 전송
# Client1 sftpupload2.txt, sftpupload3.txt, sftpupload4.txt 파일을 Server1 test 디렉터리로 전송
mput sftp* 명령을 통해 Server1의 /test 디렉터리로 sftpupload2.txt, sftpupload3.txt, sftpupload4.txt 파일 전송
ls 명령을 통해 파일이 잘 전송되었는지 확인
quit 명령을 통해 Client1로 복귀

ls –l sftp* 명령을 통해 sftp로 시작하는 모든 파일의 상세한 정보 확인
# sftp로 시작하는 모든 파일 삭제
rm –rf sftp* 명령을 통해 sftp로 시작하는 모든 파일 삭제
ls –l sftp* 명령을 통해 파일이 잘 삭제되었는지 확인

# test 디렉터리 삭제
rm –rf /test 명령을 통해 /test 디렉터리 삭제
ls –l /test 명령을 통해 디렉터리가 잘 삭제되었는지 확인

netstat –ntp 명령을 통해 IP 주소와 포트를 숫자로 표시하고, TCP 연결만 필터링하며,
연결에 사용된 프로세스 정보 확인
Ⅴ. RSYNC (Remote Sync)
| RSYNC (Remote Sync) |
구분 | 설명 | |
| 개념 | 로컬과 원격 시스템 간의 파일 및 디렉터리를 동기화 (Synchronization)하는 명령어로, 변경된 파일만 전송하여 효율적인 백업과 전송 수행 |
||
| 기능 / 역할 | 로컬과 원격, 원격과 원격 간 파일 및 디렉터리 동기화 | ||
| 기존 파일과의 차이점만 전송하여 네트워크 사용량 절감 | |||
| 백업 및 자동 동기화 작업에 주로 사용 | |||
| 프로토콜 / 포트 | TCP 873번 포트 (기본) | ||
| SSH 사용 시 TCP 22번 포트 | |||
| 보안 특징 | SSH 프로토콜을 함께 사용하면 전송 데이터가 암호화됨 | ||
| 단독 사용 시 속도는 빠르지만 보안이 낮음 | |||
| 명령어 형식 | rsync [옵션] [원본 경로] [대상 경로] | ||
| 사용 예시 | 설명 | 예시 | |
| 로컬 -> 원격 디렉터리 업로드 | rsync -avz /home/data/ user@192.168.0.10:/backup/ | ||
| 원격 -> 로컬 다운로드 | rsync -avz user@192.168.0.10:/home/data ./backup/ | ||
| SSH 포트 지정 | rsync -avz -e "ssh -p 2222" ./ user@192.168.0.10:/data/ | ||
| 주요 옵션 | 옵션 | 설명 | |
| -a | 아카이브 모드 (권한, 타임스탬프 유지) | ||
| -v | 전송 상세 정보 출력 | ||
| -z | 압축 전송 | ||
| --delete | 원본에 없는 파일은 대상에서 삭제 | ||
| --progress | 전송 진행률 표시 | ||
| 장점 | 변경된 파일만 전송하여 속도 빠름 | ||
| 백업 및 대규모 파일 동기화에 효율적 | |||
| SSH와 연동해 보안성 확보 가능 | |||
| 단점 | 초기에 전체 파일 스캔 작업으로 약간의 오버헤드 발생 | ||
| 단순 전송 목적에는 SCP보다 복잡 | |||
| 활용 사례 | 서버 백업 자동화 (cron + rsync) | ||
| 웹 서버와 DB 서버 간 실시간 데이터 미러링 | |||
| 로컬 폴더와 원격 저장소의 정기 동기화 | |||
| 대체 도구 | 도구 | 설명 | |
| SCP | 단순 파일 복사용 | ||
| SFTP | 대화형 파일 전송용 | ||
| RCLONE / Syncthing | 클라우드 파일 동기화용 | ||
Ⅵ. FTP (File Transfer Protocol)
| FTP (File Transfer Protocol) |
구분 | 설명 | |
| 개념 | 네트워크 상에서 클라이언트와 서버 간의 파일을 전송하기 위한 표준 프로토콜 | ||
| 기능 / 역할 | 원격 서버에 접속하여 파일 업로드 (put) 및 다운로드 (get) 수행 | ||
| 파일 목록 조회, 디렉터리 이동, 이름 변경, 삭제 등의 기본 파일 관리 기능 제공 | |||
| 프로토콜 / 포트 | TCP 21번 포트 (제어용) | ||
| TCP 20번 포트 (데이터 전송용, Active 모드 시) | |||
| 전송 방식 | 모드 | 설명 | |
| Active 모드 | 서버가 클라이언트로 데이터 전송 연결 생성 | ||
| Passive 모드 | 클라이언트가 서버로 연결 생성 (방화벽 환경에서 주로 사용) |
||
| 데이터 보안 | 기본 FTP는 평문 (비암호화) 전송으로 ID, 비밀번호, 데이터 노출 위험 존재 | ||
| 보안 강화를 위해 FTPS(FTP over SSL / TLS) 또는 SFTP (SSH 기반) 사용 권장 | |||
| 명령어 형식 | ftp [호스트 주소 또는 IP] | ||
| 사용 예시 | 설명 | 예시 | |
| FTP 서버 접속 | ftp 192.168.0.10 | ||
| 로그인 후 파일 업로드 | put test.txt | ||
| 파일 다운로드 | get data.csv | ||
| 여러 파일 업로드 | mput *.txt | ||
| 여러 파일 다운로드 | mget *.log | ||
| 주요 명령어 | 명령어 | 설명 | |
| ls | 파일 목록 출력 | ||
| cd / lcd | 원격 / 로컬 디렉터리 이동 | ||
| mkdir | 디렉터리 생성 | ||
| delete | 파일 삭제 | ||
| pwd / lpwd | 원격 / 로컬 경로 확인 | ||
| bye / quit | 접속 종료 | ||
| 장점 | 전송 절차 단순 | ||
| 명령어 직관적 | |||
| 다양한 운영체제에서 기본 지원 (Windows, Linux, macOS) | |||
| 단점 | 데이터 및 인증 정보가 평문 전송 -> 보안 취약 | ||
| 방화벽 환경에서 Active 모드 연결 문제 발생 가능 | |||
| 보안 대체 프로토콜 | 프로토콜 | 설명 | |
| FTPS (FTP over SSL / TLS) |
FTP 데이터 암호화 지원 | ||
| SFTP (SSH File Transfer Protocol) |
SSH 기반 완전 암호화 전송 | ||
'리눅스' 카테고리의 다른 글
| Linux 네트워크 (0) | 2026.06.14 |
|---|---|
| Linux 서비스 운영 방식 (0) | 2026.06.14 |
| Linux 스케줄링 관리 (0) | 2026.06.14 |
| Linux 백업 관리 (0) | 2026.06.14 |
| Linux 패키지 관리 (0) | 2026.06.14 |