SSH를 이용하면 암호화 통신을 통한 안전한 파일 전송을 할 수 있습니다. 이 글에서는 Rocky Linux 클라이언트 환경에서의 SSH 파일 전송 방법을 설명하겠습니다. 다른 리눅스 서버에서의 전송 방법과 큰 차이는 없습니다.
SCP 파일 복사
scp [옵션] 복사할 파일 붙여넣을 위치
로컬 호스트에 위치한 scp_test.txt를 node01.srv.world 위에 testuser01 사용자의 홈 디렉토리 바로 아래로 복사하는 예시입니다.
현재 환경에서 대상 환경으로 복사
전송하려는 파일이 있는 환경의 로컬 호스트 파일 “scp_test01.txt”를 리모트 호스트 “192.168.223.250”의 “testuser01” 사용자의 홈 디렉토리 아래로 복사하는 커맨드입니다. 아래 커맨드를 실행한 후 대상 환경의 홈 디렉토리의 파일 목록을 확인하면 복사된 파일을 확인할 수 있습니다.
[root@localhost-live /]# scp scp_test01.txt testuser01@192.168.223.250:/home/testuser01/scp_test01.txt
testuser01@192.168.223.250's password:
scp_test01.txt 100% 14 40.6KB/s 00:00
[testuser01@samplehost ~]$ ls
scp_test01.txt
대상 환경에서 현재 환경으로 복사
리모트 호스트 “192.168.223.250”의 파일 “/scp_test02.txt”를 로컬 호스트의 현재 디렉토리에 복사
[root@localhost-live /]# scp testuser01@192.168.223.250:/home/testuser01/scp_test02.txt ./scp_test02.txt
testuser01@192.168.223.250's password:
scp_test02.txt 100% 14 26.1KB/s 00:00
[root@localhost-live /]# ls
afs sev lib media proc sbin sys tmp
bin etc lib64 mnt root scp_text02.txt usr boot
home lost+found opt run srv var
SFTP 파일 전송
SFTP 서버 기능은 Rocky Linux에서는 기본적으로 활성화 되어있지만 만약 활성화 되어있지 않다면 “/etc/ssh/sshd_config” 파일에 “Subsystem sftp /usr/libexec/openssh/sftp-server”을 추가하여 “sshd”을 갱신합니다.
현재 상태 확인
SFTP 서버 접속
[root@localhost-live /]# sftp testuser01@192.168.223.250 //sftp 옵션 유저명@서버
testuser01@192.168.223.250's password:
Connected to 192.168.223.250.
sftp>
리모트 호스트의 현재 디렉토리 표시
sftp> pwd
Remote working directory: /home/testuser01
로컬 호스트 현재 디렉토리 표시
sftp> !pwd
/
리모트 호스트의 현재 디렉토리의 파일 목록 표시
sftp> ls -l
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 14:33 scp_test01.txt
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 14:53 scp_test02.txt
로컬 호스트의 현재 디렉토리의 파일 목록 표시
sftp> !ls -l
total 80
...중간 생략...
-rw-r--r--. 1 root root 14 Aug 9 15:20 sftp_test01.txt
-rw-r--r--. 1 root root 14 Aug 9 15:36 sftp_test02.txt
...중간 생략...
파일 전송
디렉토리 이동
sftp> cd /home/testuser01
sftp> pwd
Remote working directory: /home/testuser01
로컬 호스트의 파일을 리모트 호스트에 리네임하여 업로드
sftp> put sftp_test01.txt sftp_test00.txt
Uploading sftp_test01.txt to /home/testuser01/sftp_test00.txt
scp_test01.txt 100% 14 21.8KB/s 00:00
sftp> ls -l
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 14:33 scp_test01.txt
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 14:53 scp_test02.txt
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 15:48 sftp_test00.txt
로컬 호스트의 복수 파일을 리모트 호스트에 일괄 업로드
sftp> put *.txt
Uploading sftp_test01.txt to /home/testuser01/sftp_test01.txt
scp_test01.txt 100% 9 16.4KB/s 00:00
Uploading sftp_test02.txt to /home/testuser01/sftp_test02.txt
sftp_test02.txt 100% 10 17.0KB/s 00:00
sftp> ls -l
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 14:33 scp_test01.txt
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 14:53 scp_test02.txt
-rw-r--r-- 1 testuser01 testuser01 14 Aug 9 15:48 sftp_test00.txt
-rw-r--r-- 1 testuser01 testuser01 9 Aug 9 15:53 sftp_test01.txt
-rw-r--r-- 1 testuser01 testuser01 10 Aug 9 15:53 sftp_test02.txt
리모트 호스트의 파일을 로컬 호스트에 다운로드
sftp> get test.txt
Fetching /home/testuser01/test.txt to test.txt
test.txt 100% 14 8.8KB/s 00:00
리모트 호스트의 복수 파일을 로컬 호스트에 일괄 다운로드
sftp> get *.txt
Fetching /home/testuser01/test.txt to test.txt
test.txt 100% 14 8.8KB/s 00:00
Fetching /home/testuser01/test.txt to test01.txt
test01.txt 100% 14 7.3KB/s 00:00
Fetching /home/testuser01/test.txt to test02.txt
test02.txt 100% 14 27.9KB/s 00:00
리모트 호스트의 현재 디렉토리에 디렉토리 작성
sftp> mkdir tsdir
sftp> ls -l
...중간 생략...
drwxr-xr-x 2 testuser01 testuser01 6 Aug 9 16:01 tsdir
리모트 호스트의 현재 디렉토리 내의 디렉토리 삭제
sftp> rmdir testdir
리모트 호스트의 파일 삭제
sftp> rm sftp_test00.txt
Removing /home/testuser01/sftp_test00.txt
!command 에서 임의의 커맨드 실행
sftp> !cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
...
liveuser:x:1001:1001::/home/redhat:/bin/bash
종료
sftp> quit
댓글