- TELNET(23)은 평문이라 위험하고, SSH(22)는 암호화한다. 지금은 SSH만 쓴다.
- TELNET과 SSH는 원격 접속이고, 파일 전송이 아니다. 이 구분이 시험에 나온다.
- FTP는 포트 두 개 — 21번이 제어, 20번이 데이터다.
- FTP에는 능동(active) 모드와 수동(passive) 모드가 있다.
- SSH 기반 파일 전송은
scp와sftp다.
기준: 리눅스마스터 2급 출제 기준오류 제보
scp 와 sftp 다.| 서비스 | 포트 | 암호화 |
|---|---|---|
| TELNET | 23 | 없다 — 평문 |
| SSH | 22 | 있다 |
| rlogin / rsh | 513 / 514 | 없다 (옛 r 계열) |
telnet 서버 80.$ telnet 192.168.0.10 80
Trying 192.168.0.10...
Connected to 192.168.0.10.
Escape character is '^]'.Connected가 나오면 그 포트가 열려 있다는 뜻이다. 닫혀 있으면 Connection refused가 나온다. TELNET은 상대 포트에 TCP 연결을 걸고 글자를 그대로 주고받을 뿐이라 이런 확인에 쓸 수 있다.Ctrl+] 를 누른 뒤 quit을 친다.ssh user@192.168.0.10 # 접속
ssh -p 2222 user@server # 포트 지정
ssh -X user@server # 원격 GUI (X11 forwarding)| 특징 | 설명 |
|---|---|
| 암호화 | 로그인 정보와 명령·결과가 전부 암호화된다 |
| 공개키 인증 | 비밀번호 없이 키 쌍으로 인증할 수 있다 |
| 터널링 | 다른 통신을 SSH 안으로 통과시킬 수 있다 |
| 구현 | OpenSSH (데몬 sshd) |
ssh-keygen # 키 쌍 생성 (~/.ssh/id_rsa, id_rsa.pub)
ssh-copy-id user@server # 공개키를 서버에 등록~/.ssh/authorized_keys에 공개키가 등록된다.600이어야 한다.$ ssh alice@192.168.0.10
The authenticity of host '192.168.0.10 (192.168.0.10)' can't be established.
ED25519 key fingerprint is SHA256:(서버 키의 지문 문자열).
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.10' (ED25519) to the list of known hosts.
alice@192.168.0.10's password:yes라고 답하면 그 서버의 키가 내 컴퓨터의 ~/.ssh/known_hosts 에 기록되고 다음부터는 묻지 않는다.user@를 생략하면 지금 로그인한 이름 그대로 접속을 시도한다. ssh -l alice 192.168.0.10처럼 -l로 이름을 줄 수도 있다.| 파일 | 있는 곳 | 담는 것 |
|---|---|---|
~/.ssh/id_rsa | 접속하는 쪽 | 내 개인키 — 밖으로 내보내지 않는다 |
~/.ssh/id_rsa.pub | 접속하는 쪽 | 내 공개키 — 서버에 건네주는 것 |
~/.ssh/authorized_keys | 접속받는 쪽(서버) | 이 계정으로 들어와도 되는 공개키 목록 |
~/.ssh/known_hosts | 접속하는 쪽 | 내가 접속해 본 서버들의 키 |
/etc/ssh/sshd_config | 서버 | SSH 서버(데몬) 설정 |
/etc/ssh/ssh_config | 접속하는 쪽 | SSH 클라이언트 설정 |
authorized_keys는 "들어와도 되는 사용자", known_hosts는 "내가 아는 서버" 다. 방향이 반대인 두 파일을 바꿔 놓은 보기가 나온다.sshd_config와 ssh_config는 d 한 글자 차이다. d는 데몬(daemon)이므로 sshd_config가 서버 쪽이다. 접속 포트를 22에서 다른 번호로 바꾸거나 root의 직접 로그인을 막는 설정이 여기 들어 있다.id_rsa, ED25519면 id_ed25519다. 어느 종류를 기본으로 만드는지는 OpenSSH 버전에 따라 다르다. .pub이 붙은 쪽이 공개키라는 규칙은 같다.TELNET과 SSH는 "원격 접속"이지 "파일 전송"이 아니다. "파일을 주고받는 서비스로 거리가 먼 것은?"이라는 문제의 답이 TELNET 인 이유다.
| 포트 | 용도 |
|---|---|
| 21 | 제어(control) — 명령을 주고받는다 |
| 20 | 데이터(data) — 실제 파일이 오간다 |
능동(Active) 수동(Passive)
클라이언트 ──21──► 서버 클라이언트 ──21──► 서버
클라이언트 ◄─20─── 서버 클라이언트 ────► 서버
(서버가 연결을 건다) (클라이언트가 건다)| 구분 | 능동 모드 | 수동 모드 |
|---|---|---|
| 데이터 연결 | 서버가 클라이언트에게 | 클라이언트가 서버에게 |
| 서버 포트 | 20번 | 임의의 높은 포트 |
| 방화벽 | 클라이언트 방화벽에 막히기 쉽다 | 잘 통과한다 |
anonymous, 비밀번호는 관례적으로 이메일 주소를 넣는다.anonymous라는 이름을 그대로 묻는다.| 명령 | 하는 일 |
|---|---|
get | 파일 하나 받기 |
put | 파일 하나 보내기 |
mget / mput | 여러 개 받기 / 보내기 |
ls, cd, pwd | 원격 쪽 탐색 |
lcd | 로컬 디렉터리 변경 |
bin / ascii | 바이너리 / 텍스트 전송 모드 |
bye, quit | 종료 |
그림·압축 파일은 반드시
bin(바이너리) 모드로 받아야 한다. ascii 모드로 받으면 줄바꿈이 변환되어 파일이 깨진다.
$ ftp 192.168.0.10
Connected to 192.168.0.10.
220 (vsFTPd 3.0.3)
Name (192.168.0.10:alice): anonymous
331 Please specify the password.
Password:
230 Login successful.
ftp> bin
200 Switching to Binary mode.
ftp> get backup.tar.gz
… (전송 과정 출력 생략)
226 Transfer complete.
ftp> bye
221 Goodbye.ftp> 프롬프트가 떠 있는 동안은 셸이 아니라 FTP 프로그램 안이다. 여기서 치는 ls·cd는 서버 쪽 디렉터리에 작용한다. 내 컴퓨터 쪽을 옮기려면 lcd를 쓴다.get은 서버 → 나(내려받기), put은 나 → 서버(올리기)다.| 명령 | 하는 일 |
|---|---|
prompt | mget·mput 때 파일마다 묻는 확인을 켜고 끈다 |
hash | 전송 진행 상황을 #으로 표시 |
passive | 수동 모드를 켜고 끈다 |
delete / mkdir | 서버의 파일 삭제 / 디렉터리 생성 |
!명령 | FTP를 나가지 않고 내 컴퓨터의 셸 명령 실행 |
mget *.txt 처럼 여러 개를 받을 때는 m이 붙은 명령을 쓴다. get *.txt는 뜻대로 동작하지 않는다.| 방법 | 기반 | 특징 |
|---|---|---|
scp | SSH | 명령 한 줄로 복사 |
sftp | SSH | FTP처럼 대화형으로 쓴다 |
| FTPS | FTP + SSL | FTP에 암호화를 덧붙인 것 |
rsync | SSH 등 | 바뀐 부분만 전송 — 백업에 유리 |
scp file.txt user@server:/home/user/ # 보내기
scp user@server:/home/user/file.txt . # 받기
scp -r 폴더 user@server:/home/user/ # 디렉터리째
sftp user@server # 대화형
sftp와FTPS는 다르다. sftp는 SSH 기반이고, FTPS는 FTP에 SSL을 씌운 것이다. 이름이 비슷해 바꿔 놓은 보기가 나온다.
scp는 cp와 순서가 같다 — scp 원본 대상. 원격 쪽은 사용자@호스트:경로 로 적고, 콜론(:)이 원격이라는 표시다.scp file.txt alice@server는 현재 디렉터리에 alice@server라는 이름의 파일을 하나 복사해 만들고 끝난다.ssh는 소문자 -p 2222, scp와 sftp는 대문자 -P 2222 다. scp의 소문자 -p는 수정 시각과 권한을 보존하라는 다른 옵션이다.scp·sftp는 SSH의 22번 포트 하나로 다 된다. 포트를 둘 쓰는 FTP와 달리 방화벽에서 22번만 열면 접속과 파일 전송이 모두 가능하다.rsync는 rsync -av 원본 대상 꼴로 쓴다. -a는 권한·시각 등을 그대로 보존, -v는 과정 표시, -z는 압축 전송이다. 두 번째 실행부터는 달라진 것만 보내므로 빠르다.| 옛 도구 (평문) | 대신 쓰는 것 (SSH 기반) |
|---|---|
telnet · rlogin | ssh |
rsh (원격에서 명령 한 줄 실행) | ssh 호스트 명령 |
rcp | scp |
ftp | sftp |
rlogin·rsh·rcp)은 "믿는 호스트" 목록만으로 비밀번호 없이 들여보내던 방식이라 보안에 약했다. SSH가 이 셋을 모두 대체했다.| 서비스 | 포트 | 암호화 | 하는 일 |
|---|---|---|---|
| TELNET | 23 | 없음 | 원격 접속 |
| SSH | 22 | 있음 | 원격 접속 (+ 파일 전송의 바탕) |
| FTP | 21 제어 / 20 데이터 | 없음 | 파일 전송 |
| TFTP | 69 (UDP) | 없음 | 단순 파일 전송, 인증 없음 |
| SFTP · SCP | 22 | 있음 | 파일 전송 |
| rlogin / rsh | 513 / 514 | 없음 | 원격 접속 / 원격 명령 |
| 증상 | 원인 | 조치 |
|---|---|---|
Connection refused | 그 포트에서 기다리는 데몬이 없다 | 서버에서 sshd가 떠 있는지, 포트 번호가 맞는지 확인 |
한참 멈췄다가 Connection timed out | 중간에서 막히거나 주소가 틀렸다 | 방화벽, ping으로 경로 확인 |
Permission denied (publickey) | 서버의 authorized_keys에 내 공개키가 없다 | ssh-copy-id로 등록 |
| 개인키가 있는데도 키를 무시한다 | 개인키 파일 권한이 너무 열려 있다 | chmod 600 ~/.ssh/id_rsa |
REMOTE HOST IDENTIFICATION HAS CHANGED | known_hosts에 적힌 서버 키와 다르다 | 서버 교체가 맞는지 확인한 뒤 옛 줄 삭제 |
FTP 로그인은 되는데 ls에서 멈춘다 | 능동 모드의 데이터 연결이 방화벽에 막혔다 | passive로 수동 모드 전환 |
| 방법 | 설명 |
|---|---|
| VNC | 화면 자체를 전송한다. 플랫폼 독립적 |
| XRDP | 윈도의 원격 데스크톱(RDP)으로 접속 |
ssh -X | X11 forwarding — 창 단위로 띄운다 |
내일은 여러 컴퓨터가 파일을 공유하는 NFS와 삼바를 다룬다.
anonymous 계정으로 접속하는 공개 FTP.scp / sftp : SSH를 기반으로 파일을 복사하거나 전송하는 도구.rsync : 변경된 부분만 전송해 효율적으로 동기화하는 도구.선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
다음 중 TELNET과 비교한 SSH의 특징으로 알맞은 것은?
문제 2
다음 중 SSH를 기반으로 원격 시스템과 파일을 복사하는 명령으로 알맞은 것은?
문제 3
다음 중 FTP가 명령을 주고받는 제어 연결에 사용하는 포트 번호로 알맞은 것은?
문제 4
다음 중 익명 FTP에 접속할 때 사용하는 계정 이름으로 알맞은 것은?
문제 5
다음 중 파일을 주고받는 서비스와 거리가 먼 것으로 알맞은 것은?