[개발] 지식/리눅스
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
: IPPort
: 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
: 파일 정보 유지 (수정시간, 액세드 등)