我在启用 NAT 的路由器后面有一个旧的 Linux 机器(版本 2.6.12,由同事编译),我想从远程 PC 访问它。盒子上运行着一个 SSH 守护进程,但由于还没有 SSH 客户端,我们编译了一个旧的 Dropbear 客户端,它在创建隧道时工作得很好。
我应该注意到,SSH 守护进程在端口 55000 上运行,并且 Dropbear 客户端的版本是 v0.53。
然而,当使用远程端口转发时,问题就出现了:
./dbclient -N -R myserver.com:10022:localhost:55000 [email protected]
这会提示我输入密码,从 myserver.com,我可以看到连接成功:
sudo netstat -tulpn | grep 10022
tcp 0 0 xx.xx.xx.xx:10022 0.0.0.0:* LISTEN 31512/sshd: me
然而,当尝试从我的 Mac 或 Ubuntu(OpenSSH_7.4p1、LibreSSL 2.5.0)使用隧道时,并没有发生太多事情。
ssh -p 10022 [email protected]
只是永远挂着。我的 Linux 机器上存在用户“test”。在详细模式下,我得到以下信息:
ssh -p 10022 [email protected] -v
OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /Users/me/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to myserver.com [xx.xx.xx.xx] port 10022.
debug1: Connection established.
debug1: identity file /Users/me/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4
我对 SSH 的了解相当基础,远程转发对我来说非常陌生,所以我不知道下一步该尝试什么。我在 Ubuntu 和 Mac 上尝试过 Dropbear 客户端,但它也挂起。我不认为它有详细模式(?)。我尝试了相反的方法,即在 Ubuntu 中设置远程端口转发,然后从 Linux 机器进行连接,这样就可以了。
这只是一些配置问题吗?难道是 SSH 守护进程不欢迎我的连接,我该如何检查或解决这个问题?我的 PC 上是否需要旧版 SSH 客户端?
任何帮助是极大的赞赏!
编辑: sshd 是否需要任何特殊的配置参数,或者这与 sshd 无关?
答案1
这绝对不是大多数人的解决方案,但无论如何我都会将其发布在这里,也许它可以在将来帮助其他人。
问题在于,在 Linux 机器上,环回接口默认处于关闭状态。我还是不知道为什么。我通过尝试 SSH 到本地主机来解决这个问题,但失败了。 ping 也不起作用。启动环回后,一切正常:
ifconfig lo up
(您的环回接口的名称可能不同,这取决于您的操作系统)
我只能假设在幕后,正在从转发隧道到本地 SSH 守护程序建立本地 SSH 连接。