Ip

為什麼 FTP 不能通過我的 ssh 隧道工作?

  • March 15, 2018

電腦 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(我的本地電腦)無法 ftp 主機 130.89.148.12。讓我們以這種方式使用 ssh 命令建構一個 ssh 隧道:

ssh -L -f -N localhost:2121:130.89.148.12:21   root@44.44.44.44

我的本地電腦和電腦 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 也只能由 root 綁定。

所以要麼你這樣做:

sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 user@44.44.44.44

這樣您就不會提供任何額外的埠,而只能將其與

ftp -p localhost

或者如果您沒有 root:

ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 user@44.44.44.44

然後使用:

ftp -p -P 2121 localhost 

來自 man 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

最後,我建議不要在遠端系統中使用 root 進行 ssh 連接。root 是一個非常強大的帳戶,只應保留用於系統管理。

此外,在許多現代 Linux 中,預設情況下禁用 ssh 以 root 身份遠端登錄。

為什麼通過 SSH 的 root 登錄如此糟糕,以至於每個人都建議禁用它?

引用自:https://unix.stackexchange.com/questions/251486