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

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 (내 로컬 PC)는 호스트 130.89.148.12를 ftp 할 수 없습니다. 다음과 같이 ssh 명령을 사용하여 ssh 터널을 구축해 보겠습니다.

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

로컬 PC와 컴퓨터 A (44.44.44.44) 사이의 ssh 터널이 연결되었습니다. 44.44.44.44에 로그인하기위한 암호.
그런 다음 로컬 PC 콘솔에 명령을 입력하려면 :

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

내 ssh 터널에 무슨 문제가 있습니까?

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

설명

  • 포트 지정 방법에 대한 ftp(1) 맨 페이지를 확인하십시오. 일반적으로 '는 공백 (콜론 아님) 또는 -p 옵션으로 구분됩니다. 사용자는 ' 또한 수동 ftp를 사용해야하므로 먼저 설명서를 확인하십시오.
  • 텍스트를 그림으로 배치하지 마십시오.

답변

귀하의 접근 방식은 다른 일반적인 프로토콜과 달리 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 

From man ftp http://linux.die.net/man/1/ftp

-p 수동 모드
-P 포트

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

ftp -p localhost 2121 

“SSH 터널 로컬 및 원격 포트 전달 설명”에 대한 링크도 남겨 둡니다.

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

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

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

SSH를 통한 루트 로그인이 왜 그렇게 나쁜지 모든 사람이이 기능을 사용 중지하라고 조언 하시겠습니까?

댓글

  • 무엇입니까? 데이터 연결은 포트 20을 사용하지 않습니다. 임의의 포트 > 1024를 사용합니다. 또한 ftp에는 적어도 Ubuntu 16.04에서는 -P 옵션이없는 것으로 보입니다. 따라서 ' 데이터 연결이 설정 될 때 어떤 임의의 포트가 선택 될지 모르기 때문에 ssh로 ftp를 전달할 수 없습니다 (전송되는 각 파일 또는 각 ls).
  • 아니요, 서버는 임시 포트에서도 수신합니다. 여러 클라이언트에 서비스를 제공 할 수 있고 각 클라이언트에 대해 포트 20을 사용하면 어느 것이 어느 제어 세션에 해당하는지 알 수 없습니다.
  • 내 점에 FTP RFC를 인쇄했습니다. 매트릭스 프린터를 사용하고 16 살 때 연구했습니다. 한 서버에 PASV 명령을 내린 다음 다른 서버의 PASV 응답에서 IP 주소와 포트 번호를 사용하여 다른 서버에 PORT 명령을 내릴 수 있다는 것을 알아 냈습니다. 28.8kbps 모뎀을 통해 직접 파일을 다운로드하고 업로드하는 대신 한 서버에서 다른 서버로 파일을 직접 전송합니다. 나중에이를 수행 할 수있는 FXP라는 프로그램이 나왔고, WinNT 용 FTP 서버 소프트웨어를 작성하여 다른 모든 것에서 벗어나게했습니다. 직접 PASV 답장을보십시오.
  • 혼란 스럽습니다. 20이 아닌 포트 21에서 수신합니다. 포트 21에서 서버에 연결 한 다음 PORT 명령을 실행하여 연결해야하는 IP 및 포트 번호를 서버에 알리거나 PASV 명령을 실행합니다.이 경우 수신 대기를 시작합니다. 임시 포트의 데이터 연결, 응답에있는 포트를 지정합니다. 인용 pasv 명령에서 ftp.gnu.org로 : " 227 수동 모드 진입 (208,118,235,20,96,222) ". 서버는 포트 96,222 또는 24,798에서 수신 대기합니다.
  • 올바르게 편집하지 않는 이유는 무엇입니까?

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다