SSH挂起没有密码提示 – 工作在根或其他帐户

我有基于密钥的login工作正常。 然后,我更改了我的计算机上的主机名,基于密钥的login停止工作。 似乎是有道理的。 键可能依赖于我的旧主机名。 所以,我删除了我的所有密钥和〜/ .ssh /中的所有文件,并重新生成了它们(并更改了我连接的服务器上的authorized_keys)

现在,任何时候我尝试SSH,它只是挂起没有密码提示,无论我在哪里试图SSH – 甚至服务器,我没有基于密钥的login设置。 .ssh / config中没有任何内容。

而且,当我“扎根”时,ssh完美地工作。 没有问题。 这只发生在我的用户帐户上。

下面是一些来自ssh的debugging信息

 ssh -vv [email protected]
 OpenSSH_5.2p1,OpenSSL 0.9.8k 2009年3月25日
 debug1:读取configuration数据/Users/myname/.ssh/config
 debug1:读取configuration数据/ usr / etc / ssh_config
 ......
 debug1:主机'myremoteserver.com'是已知的并且与RSA主机密钥匹配。
 debug1:find/Users/myname/.ssh/known_hosts:1中的键
 debug2:bits设置:512/1024
 debug1:ssh_rsa_verify:签名正确
 debug2:kex_derive_keys
 debug2:set_newkeys:模式1
 debug1:发送了SSH2_MSG_NEWKEYS
 debug1:期待SSH2_MSG_NEWKEYS
 debug2:set_newkeys:模式0
 debug1:收到SSH2_MSG_NEWKEYS
debugging1:发送了SSH2_MSG_SERVICE_REQUEST
 debug2:service_accept:ssh-userauth
 debug1:收到SSH2_MSG_SERVICE_ACCEPT

然后它只是挂在这里…..

这里是dtruss(比如strace,但是对于OSX)输出接近它挂起的地方:sudo dtruss ssh -vv [email protected]

select(0x4,0x508200,0x0,0x0,0x0)= 1 0
 (0x3,“$ \ 222 \ 351 {L \ 363 \ 261 \ 25063sN \ 216 \ 300 @ q7 \ 203 \ 276b \ 257 \ 354 \ 337 \ 356 \ 260!{\ 342 \ 017 \ 271 = \ 222, \ 245 \ 347t \ 006 \ 225 \ 257 \ 333; \ 204 \ 020] \ 242 \ 005z#\ 0“,0x2000)= 48 0
写(0x2,“debug2:service_accept:ssh-userauth \ r \ n \ 0”,0x26)= 38 0
连接(0x4,0xBFFFEEA2,0x6A)= 0 0
写(0x4,“\ 0”,0x4)= 4 0
写(0x4,“\ v5 \ 004 \ 0”,0x1)= 1 0
读(0x4,“\ 0”,0x4)= -1错误#4

这似乎是试图阅读一些东西,只是挂在这个。 如果有人有一些build议或想法,我将非常感激!

我可以在反向DNS中感兴趣吗?

本质上,客户端正在服务器上做反向DNS,反之亦然。

我提出一个testing:

通过编辑/ etc / ssh / sshd_config禁用服务器上的DNS查找,并确保“UseDNS”设置为“no”。

运行“service ssh reload”(或任何导致你的ssh守护进程重新读取configuration),然后再试一次。

从本质上来说,在很长的一段时间之后,最终没有发生什么事情,是吗?

你可能会检查的另一件事是看服务器上的/ etc / hosts的内容,以确保没有任何错误。

您的ssh客户端为您的帐户而不是其他帐户(root)挂起的原因可能是您的ssh-agent有问题。 或者ssh-agent没有运行,或者它的configuration在某种程度上是错误的。

要获得确认,您可以尝试以下操作:

 unset SSH_AUTH_SOCK ssh [email protected] 

如果你被要求input密码到你的ssh_key,这意味着你的ssh-agent有问题。

请参阅我在这个相关的问题上的post。

检查〜/ .ssh目录及其中的文件的权限。 您的默认umask可能太宽松了,当您重新创build文件时,您可能会不小心给了他们错误的权限。 我自己被这几次烧了。 没有任何的SSH客户端(或服务器)我曾经给过这个有用的错误消息或者…

你有你的客户端(和你的服务器上)的可用磁盘空间?

df -h

我有一个类似的问题。

 ssh domain.ip:user.name 

看来我可以通过强制login名来绕过这个问题。

 ssh -v domain.ip -l user.name 

对我来说,升级到雪豹解决了这个问题。 所以,我认为这与OSX中的一个bug有关。

如果是因为已保存的密钥,则应该可以将其从known_hosts文件的〜/ .ssh目录中删除。 只要find条目并删除它,那么它应该再次提示你。

另一方面,当主机与所logging的不匹配时,它应该发出警告。

我有问题,在OS X的主机名查找行为就像失败; 连接刚刚等待很长时间,或者出现提示时,它已经等待了很长时间,因此在连接断开前input密码需要十秒左右的时间。 尽pipe有人build议将主机添加到主机文件,但我永远无法追踪。 我想这只是一个“与OS X的DNS查找故障”,它预计会被容忍…如果别人有这个问题,并解决了它,我很想知道这件事。

检查服务器上的日志。 通常在/var/log/auth.log / Ubuntu)或/var/log/secure (RedHat / CentOS)。 任何连接问题通常logging在那里。

确保/ etc / hostname是换行符终止的。