从我的大学互联网连接,sshing到我的机器(“ssh example.com”)工作没有任何问题。
从我的家庭adsl,“ssh example.com”我的控制台卡住了这条消息:
debug1: Server accepts key: pkalg ssh-rsa blen 533
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
有时它可能会让我进入,但在大多数情况下不会。 有趣的是,如果我执行“ssh example.com bash -i”,我会立即登录。
答案 0 :(得分:11)
我终于找到了问题的根源。它与SSH类型的服务(ToS)TCP数据包有关。
当您要求常规ssh teminal时,ssh将TCP数据包服务类型(ToS)设置为“interactive”。我住所的路由器阻止了这些数据包类型!</ p>
使用netcat,隧道TCP数据包不会获得任何类型的服务指令。因此,如果通过netcat隧道传输所有ssh流量,则将TCP数据包的ToS重置为默认值。
在.ssh / config中,您必须设置:
Host *.example.com
ProxyCommand nc %h %p
因此,每次尝试ssh到example.com时,都会调用netcat并对数据包进行隧道传输。
答案 1 :(得分:9)
从OpenSSH 5.7开始,你可以将它添加到你的ssh配置文件中(〜/ .ssh / config或/ etc / ssh / ssh_config):
Host * IPQoS 0x00
这是解决Asterios问题的更直接的解决方法。
答案 2 :(得分:1)
我刚遇到同样的问题。尝试使用其他ssh客户端登录以获取更多信息。虽然linux命令行客户端没有带回任何有用的消息,但Putty回来时“服务器拒绝分配pty”。我用mkdir / dev / pts和mount -a修复它。如何把它弄得一团糟,我不太确定。
顺便说一下,bash -l应该像登录shell一样,所以你应该能够很容易地证明Peter Westlake的建议是正确的或不正确的。答案 3 :(得分:0)
两种情况之间的区别在于“bash -i”不会为您提供登录shell,而只是运行ssh。您可以“man bash”获取“登录shell”的详细信息,但主要的是它运行/ etc / profile和.bash_profile。查看那些可能导致问题的文件。
答案 4 :(得分:0)
也许服务器没有ptys。