sftp로 서버 간 데이터 전송하기 (Proxy 설정)

2023. 6. 14. 06:11[개발] 지식/리눅스

sftp로 A서버 → B서버로 파일을 전송하고 싶은 상황. 먼저 A서버에 SSH로 접속해서 B서버로 접속하고자 했다. 그런데 B서버는 Proxy 서버를 경유해서 접근해야 했고, Proxy는 22222번 포트로 접속해야 했다.

$ sftp ubuntu@123.123.123.123

일반적인 경우 sftp로 접근하기 위해서 위와 같이 계정과 ip를 넣고 명령어를 실행하면 된다. 하지만 이렇게 하면 기본적으로 설정된 22번 포트로 접근하려고 하기 때문에 별도의 설정이 필요하다.

먼저 A서버에 SSH로 접속한다. 그리고 ~/.ssh/config 파일을 연다. ssh config 파일 경로는 다를 수 있는데, 별도 설정을 안했다면 아마 대부분 저 경로일 것이다. vi ~/.ssh/config 명령어로 파일을 편집기로 열 수 있다.

Host 123.123.123.123 # alias
  HostName 123.123.123.123 # host address
  Port 22222 # SSH Port
  IdentitiesOnly yes
  IdentifyFile ~/.ssh/cert.ppk # 개인키

그리고 위에 작성된 것처럼 설정을 입력한다.

  • Host : Host 이름
  • HostName : IP
  • Port : B서버의 SSH 포트
  • IdentitiesOnly : 키 파일만 사용하겠다는 옵션
  • IdentifyFile : 개인키 파일이 위치한 경로

나의 경우는 키 파일을 사용해서 인증해야 하기 때문에 개인 키 파일을 ~/.ssh 경로에 넣어두었다.

$ sftp ubuntu@123.123.123.123

그리고 다시 위 명령어를 입력해서 B서버로 접속하자.

Conneted to 123.123.123.123

정상적으로 접속했다면 위와 같은 메세지가 출력되고 sftp 콘솔이 열린다. sftp 프로토콜로 접속했으면 이제 파일을 다운로드 받아야 한다. 파일을 다운로드하려면 get 명령어를 사용한다.

$ get -rp /mnt/target

get 명령어 뒤에 다운로드 대상 파일이 있는 경로를 넣고 실행하면 현재 접속한 서버에서 123.123.123.123 서버(B서버)의 파일을 다운받을 수 있다.

  • r : 디렉토리를 다운로드
  • p : 파일 정보 유지 (수정시간, 액세드 등)

Reference

[Linux] scp, sftp - 로컬과 서버 간 파일 전송, 서버 간 파일 전송

'[개발] 지식 > 리눅스' 카테고리의 다른 글

apt와 apt-get의 차이  (0) 2022.12.09
리눅스 Disk 마운트하기  (0) 2022.11.16
WSL2 Ubuntu 설치하기  (0) 2022.08.12
ubuntu에서 node.js, npm 수동설치  (0) 2022.08.02
리눅스 하드웨어 사양 확인하기  (0) 2022.04.03
<