Ip
為什麼 FTP 不能通過我的 ssh 隧道工作?
電腦 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 隧道怎麼了?
您的方法沒有考慮到與其他常見協議相反,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 隧道本地和遠端埠轉發解釋”
最後,我建議不要在遠端系統中使用 root 進行 ssh 連接。root 是一個非常強大的帳戶,只應保留用於系統管理。
此外,在許多現代 Linux 中,預設情況下禁用 ssh 以 root 身份遠端登錄。