计算机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 [email protected]
我的本地电脑和计算机 A(44.44.44.44)之间的 ssh 隧道在密码登录到 44.44.44.44 后已连接。
然后在我的本地电脑控制台输入命令:
ftp localhost:2121
ftp: localhost:2121: Name or service not known
我的 ssh 隧道出了什么问题?
答案1
您的方法没有考虑到与其他常见协议相反,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 [email protected]
这样您就不会提供任何额外的端口,并且仅将其与
ftp -p localhost
或者如果您没有 root:
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 隧道本地和远程端口转发解释”的链接
最后,我建议不要在远程系统中使用 root 进行 ssh 连接。 root 是一个非常强大的帐户,只应保留用于系统管理。
此外,在许多现代 Linux 中,默认情况下禁用 root 身份的 ssh 远程登录。