컴퓨터 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는 기본적으로 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 터널 로컬 및 원격 포트 전달 설명”에 대한 링크도 남겨 둡니다.
마지막으로 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에서 수신 대기합니다.
- 올바르게 편집하지 않는 이유는 무엇입니까?
ftp(1)
맨 페이지를 확인하십시오. 일반적으로 '는 공백 (콜론 아님) 또는-p
옵션으로 구분됩니다. 사용자는 ' 또한 수동 ftp를 사용해야하므로 먼저 설명서를 확인하십시오.