我正在尝试通过 SSH 连接到 Linux 服务器:
ssh -X -l <username> <address>
当我通过家用 WiFi 路由器(速度非常快)连接时,此命令可能会无限期挂起。 (对于其他情况,例如当我使用手机的移动数据时,它会 100% 的时间立即连接)。 如果我重复 ssh 命令足够多次(大约 100 次),通过执行该命令,然后在没有提示时立即按 Control C,我通常可以让它响应,尽管这不是万无一失的。 当它最终工作时,提示是立即的,并且终端响应非常快。 如果我让 ssh 命令挂起等待密码提示,它有时会在几秒钟到几分钟后提示我的密码,但它也可能会挂起一个小时。
我不是尝试连接的服务器的管理员,因此无法UseDNS no
在服务器上启用。这肯定是问题所在吗?为什么它对待我的移动数据与家庭 WiFi 的方式不同?
更新
以下是使用以下方法运行时经过清理的输出-vvv
debug1: Reading configuration data /Users/userName/.ssh/config
debug2: checking match for 'exec "/usr/local/bin/sft resolve -q %h"' host address originally address
debug1: Executing command: '/usr/local/bin/sft resolve -q address'
debug3: command returned status 126
debug3: /Users/userName/.ssh/config line 2: not matched 'exec "/usr/local/bin/sft resolve -q address"'
debug2: match not found
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug1: Connecting to address port 22.
它就挂在这里。
答案1
确保您已在 sshd_config 文件中启用了 follownig。
USeDNS no
答案2
解决此问题的最简单方法是使用服务器的 IP 地址,而不是依赖 DNS 为您找到它。所以:
ssh -Xl <username> 123.456.789.0
看起来有点琐碎,但如果你是一个缺乏经验的网络人员,那么你可能不会想到这一点(就像我一样)