-
SSH 터널을 뚫어서 SFTP 서버에 접근하기programming 2019. 4. 8. 18:15
SSH 터널을 뚫어서 SFTP 서버에 접근하기
상황
+-----+ |local| +-----+ | | SSH Tunnel | V +---------------------------------------+ |proxy_username@proxy_address:proxy_port| +---------------------------------------+ | | SFTP / SSH Connection | V +------------------------------------------+ |server_username@server_address:server_port| +------------------------------------------+
위와 같이 프록시 서버를 거쳐 SFTP 서버에 접근하고자 한다. WinSCP 같은 툴에서는 간단한 설정으로 터널을 통한 접속이 가능하지만, FileZilla나 CyberDuck 에서는 해당 기능이 지원되지 않는다. 따라서 직접 SSH 터널을 개설하고 해당 터널을 이용해 접속해야 한다.
해결
SSH 터널 개설
로컬 상 임의의 포트를 열어 서버 주소와 연결해야 한다. 열려있는 포트를 알고 있다면 해당 포트 넘버를 이용하면 된다. 그렇지 않으면 아래와 같이 파이썬으로 빈 포트를 찾을 수 있다. 파이썬에 socket 모듈에서 0번 소켓으로 바인딩하면 자동으로 빈 소켓을 찾아 연결하는 것을 이용하는 스크립트이다.
python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()'
비어있는 로컬 포트를 찾았으면 터미널에서 다음과 같이 SSH 터널을 개설한다.
ssh -L local_port:server_address:server_port proxy_username@proxy_address -p proxy_port
비밀번호를 입력하라는 메시지가 나오면 프록시 계정 비밀번호를 입력한다.
SFTP 접속
이제
localhost:local_port
으로 접속하면server_address:server_port
으로 연결된다. FileZilla 같은 SFTP 클라이언트에서 다음과 같이 접속한다.Host: sftp://localhost Username: server_username Password: server_password port: local_port
정상적으로 SFTP 연결이 된 것을 확인한다.
SSH 접속
터미널에서 서버에 SSH로 접속해야 하는 경우에도 위와 동일하다. 터미널에서 다음과 같이 입력한다.
ssh server_username@localhost -p local_port
비밀번호를 입력하라는 메시지가 나오면 서버 계정 비밀번호를 입력한다.
'programming' 카테고리의 다른 글
큰 파일을 여러 개로 쪼갰다가 다시 합치기 (0) 2019.01.07 오늘의 교훈 (2019. 01. 07.) (0) 2019.01.07 OS X, miniconda 환경에서 ffmpeg과 librosa 동시에 사용 (0) 2019.01.07 낡은 컴퓨터에 리눅스 설치하기 (0) 2018.12.30 댓글