더북(TheBook)

SFTP 서버 설정하고 클라이언트에서 접속하기

SSH가 설치되는 과정에서 scp, sftp, sftp-server와 같은 모든 하위 시스템이 설치되기 때문에 SSH 서버가 곧 SFTP 서버입니다. server02에서 SFTP 서버인 server01에 접속해보겠습니다.

그림 7-35 SFTP 서버의 파일 사용하기
이렇게 하세요!

SSH 서버 설정 파일 /etc/ssh/sshd_config에 SSH 서버의 하위 시스템을 지정하는 옵션이 있습니다. 다음과 같이 sftp 서버로 sftp-server가 등록되어 있습니다.

Subsystem sftp /usr/lib/openssh/sftp-server

SSH 서버만 제대로 동작하고 있다면 SFTP 클라이언트로 바로 접속 가능합니다.

administrator@server01:~$ netstat -a | grep ssh
tcp        0     0 *:ssh                    *:*                   LISTEN
tcp        0     0 192.168.122.201:ssh      losttemple:41996      ESTABLISHED
tcp6       0     0 [::]:ssh                 [::]:*                LISTEN
Tip

아직 SSH 서버가 설치되지 않은 상태라면 6장을 참고하여 SSH 서버를 설치하고 동작시켜야 합니다.

물론 SFTP 서버에 접속 가능하도록 SSH 포트인 22번을 개방해야 합니다.

administrator@server01:~$ sudo ufw status
Status: active

To                        Action    From
--                        ------    ----
...
22                        ALLOW     Anywhere
22                        ALLOW     Anywhere (v6)
Tip

SFTP는 명령과 자료 전송에 포트 22 하나만 사용하므로 명령 포트와 데이터 포트로 이원화되어 동작하는 FTP 서버에서 발생하는 문제는 자동적으로 해결됩니다.

server02에서 공개키 인증을 사용하고 있는 SSH 서버에 접근하려면 server02에서 생성한 공개키를 전송해야 할 필요가 있습니다. 잠시만 패스워드 인증을 허용하도록 설정해야 합니다.

administrator@server01:~$ sudo vi /etc/ssh/sshd_config

패스워드 인증 기능을 활성화하기 위해 PasswordAuthentication 옵션을 주석처리합니다.

#PasswordAuthentication no

ssh 서비스를 다시 시작합니다.

administrator@server01:~$ sudo service ssh restart

클라이언트인 server02에서 개인키를 생성합니다. 생성 과정에서 패스구문을 입력해야 합니다.

shinjaehun@server02:~$ ssh-keygen

ssh-copy-id로 개인키를 전송합니다.

shinjaehun@server02:~$ ssh-copy-id administrator@192.168.122.201
Tip

개인키를 전송하는 과정에서 묻는 비밀번호는 개인키를 생성할 때 입력한 패스구문이 아니라 server01 사용자인 administrator 계정의 로그인 패스워드입니다.

다시 server01의 공개키 인증을 활성화합니다.

administrator@server01:~$ sudo vi /etc/ssh/sshd_config

PasswordAuthentication의 주석을 해제해서 패스워드 인증을 허용하지 않습니다.

PasswordAuthentication no

ssh 서비스를 다시 시작합니다.

administrator@server01:~$ sudo service ssh restart

SFTP 클라이언트 sftp로 SSH 서버에 접속해봅시다. sftp [사용자 계정]@[서버 주소] 형식으로 입력합니다. 접속 과정에서 개인키를 생성할 때 입력한 패스구문이 필요합니다.

administrator@server02:~$ sftp administrator@192.168.122.201
Enter passphrase for key '/home/administrator/.ssh/id_rsa': ********
Connected to 192.168.122.201.
sftp>
Tip

server01 사용자 administrator의 로그인 패스워드가 아니라 server02 사용자 administrator의 개인키 패스구문을 입력합니다.

sftp 사용법은 ftp 사용 방법과 거의 동일합니다. 유닉스/리눅스 환경의 명령행에서 쓰는 셸 명령은 SFTP 서버인 원격 호스트를 대상으로 하고 ‘ !’ 기호를 붙여 명령을 실행하면 로컬 호스트를 대상으로 실행됩니다. 파일 다운로드와 업로드에 get, put 명령을 사용합니다.

sftp> ls
sftp> !ls
Tip

sftp 사용 방법은 ‘SFTP 서버 설정하고 클라이언트에서 접속하기’를 참고합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.