当我在办公室使用 wifi 时,我可以使用 SCP 将文件复制到服务器或从服务器复制文件,但由于某种原因 SSH 无响应。它只是挂起,不打印任何内容,而且我无法ctrl-c
结束它;我必须关闭终端窗口。
当我连接到 LAN 时,一切正常。有什么想法如何弄清楚发生了什么事吗?
答案1
我终于找到了导致问题的原因。这是因为当我进行无线连接时,我的路由器阻止了 TCP keepalive 消息(见图)。
ssh my_server -o TCPKeepAlive=no
解决了我所有的问题。耶!
从文档中:
TCPKeepAlive
Specifies whether the system should send TCP keepalive messages
to the other side. If they are sent, death of the connection or
crash of one of the machines will be properly noticed. However,
this means that connections will die if the route is down tem-
porarily, and some people find it annoying. On the other hand,
if TCP keepalives are not sent, sessions may hang indefinitely on
the server, leaving "ghost" users and consuming server resources.
The default is "yes" (to send TCP keepalive messages), and the
server will notice if the network goes down or the client host
crashes. This avoids infinitely hanging sessions.
To disable TCP keepalive messages, the value should be set to
"no".
答案2
从您的粘贴中可以清楚地看出您的公钥已被接受。我有一种感觉,这可能与 PTY 分配有关,因为我在您的 -vv 中没有看到这一点:
debug2: PTY allocation request accepted on channel 0
你能从有线+无线和diff
它们中产生2个输出吗?
答案3
验证服务器端的 /etc/ssh/sshd_config 和客户端的 /etc/ssh/ssh_config。 (不要忘记客户端)
wifi 和以太网之间的唯一区别是 IP 地址。
如果您的 wifi 出现 TX/RX 错误,这也可能是一个问题。 (很少)
答案4
这是六年后的事了,但我一直在努力解决一个看似相似但最终并非如此的问题。但我提供这个是希望有人觉得它有用。
我可以执行 scp,但不能执行 ssh。然后我意识到我可以通过 ssh 执行命令,例如 ssh user@server 'ls -l'。
问题出在 .bashrc 中:它包含以下几行:
HISTSIZE=-1
HISTFILESIZE=-1
禁用无限历史记录似乎可以解决这个问题。