SSH 터널을 통해 FTP가 작동하지 않는 이유는 무엇입니까?

SSH 터널을 통해 FTP가 작동하지 않는 이유는 무엇입니까?

컴퓨터 A(ip가 44.44.44.44라고 가정)는 ftp 호스트 130.89.148.12를 사용할 수 있습니다.

ftp 130.89.148.12
Connected to 130.89.148.12.
220 ftp.debian.org FTP server
Name (130.89.148.12:debian8): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

컴퓨터 B(내 로컬 컴퓨터)는 호스트 130.89.148.12를 FTP할 수 없습니다. ssh 명령을 사용하여 SSH 터널을 구축해 보겠습니다.

ssh -L -f -N localhost:2121:130.89.148.12:21   [email protected]

내 로컬 컴퓨터와 컴퓨터 A(44.44.44.44) 사이의 SSH 터널은 44.44.44.44에 비밀번호로 로그인한 후 연결되었습니다.
그런 다음 로컬 컴퓨터 콘솔에 다음 명령을 입력합니다.

ftp  localhost:2121
ftp: localhost:2121: Name or service not known

내 SSH 터널에 어떤 문제가 있나요?

chexum을 생각해 보세요. 올바른 ftp 명령은 ftp localhost 2121이지만 새로운 질문입니다. 여기에 이미지 설명을 입력하세요.

답변1

귀하의 접근 방식은 다른 일반적인 프로토콜과 달리 FTP가 사용하는 것을 고려하지 않습니다.둘 다TCP의 포트 20 및 포트 21기본적으로.

"수동적"이라는 용어는 프로토콜이약간원래 구현보다 성능이 더 좋습니다.

다음은 링크입니다:

http://www.slacksite.com/other/ftp.html

포트 20/TCP는 데이터에 사용되고 포트 21/TCP는 명령에 사용됩니다.

Unix에서는 권한이 있는 포트 <1024는 루트로만 바인딩될 수 있습니다.

따라서 다음 중 하나를 수행하십시오.

sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 [email protected]

이렇게 하면 추가 포트를 제공하지 않고 포트만 연결합니다.

ftp -p localhost

또는 루트가 없는 경우:

ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 [email protected]

그런 다음 다음을 사용하십시오.

ftp -p -P 2121 localhost 

FTP 사람들로부터http://linux.die.net/man/1/ftp

-p 수동 모드
-P 포트

또는 버전이 ftp지원되지 않는 경우 -P(Debian 9/Ubuntu 16.04):

ftp -p localhost 2121

"SSH 터널링 로컬 및 원격 포트 전달 설명"에 대한 링크도 남겨 두겠습니다.

http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

마지막으로 원격 시스템에서 SSH 연결에 루트를 사용하지 않는 것이 좋습니다. 루트는 매우 강력한 계정이므로 시스템 관리용으로만 예약해야 합니다.

또한 많은 최신 Linux에서는 루트로 SSH 원격 로그인이 기본적으로 비활성화되어 있습니다.

SSH를 통한 루트 로그인이 너무 나빠서 모두가 비활성화할 것을 권장하는 이유는 무엇입니까?

관련 정보