当我通过 ssh 登录到我的某个服务器时,它在身份验证后就挂起了。这是客户端上的输出-v
。
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to host1 [10.6.27.64] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type -1
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: loaded 3 keys
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'host1' is known and matches the RSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:172
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = C
debug1: Sending env LC_ALL = C
Last login: Wed May 21 10:24:14 2014 from host2
This machine has been configured with kickstart
host1 in bcinf17 in bay 3 in rack D10-Mid
在/var/log/secure
服务器上我看到了这个(幸运的是我仍然打开了一个会话):
May 21 10:27:31 host1 sshd[12387]: Accepted publickey for user from 1.1.11.239 port 34135 ssh2
May 21 10:27:31 host1 sshd[12387]: pam_unix(sshd:session): session opened for user user by (uid=0)
因此,没有出现任何明显错误。客户端和服务器似乎能够通信。没有任何问题/var/log/messages
。
磁盘空间充足。一些路径已安装(包括主区域),但我的仍处于活动状态的 shell 可以正常访问它们。
我可以连接到其他服务器;只有这台服务器有问题。我尝试过重新启动sshd
。的配置文件sshd
看起来像是默认的,所以里面什么都没有。据我所知,最近没有任何变化。
尝试运行命令(ssh host1 -t bash
,或-t vi
)似乎也挂起了,所以不要认为这与我的登录脚本有关。
还尝试过从同一位置和其他位置的其他主机登录,或通过 Putty 从 Windows 登录,并使用密码而不是密钥登录。
不确定还要去哪里找或者尝试什么。
这是 RHEL 6.4 服务器,64 位。
答案1
有几种情况可能会导致 SSH 身份验证后挂起。
但是大多数情况还会出现其他症状(SSH 身份验证后立即挂起是最明显的症状)
- 正如 Iain 提到的,任何用户登录脚本。
~/.bashrc
、、、等等~/.bash_profile
~/.profile
~/.kshrc
- 正在运行/重新启动的进程太多。
- 有些程序有
fork()
太多的子进程,负载(1/5/15 得分) 太高。
- 有些程序有
- 存在 I/O 等待问题。
- 通常是由硬盘损坏(常见)或网卡性能不佳(罕见)引起的。
- 第三方 PAM 模块挂起(例如:非标准 Kerberos 配置)
- 并不总是模块本身,但有时是某处具有完整日志服务器的服务(如审计)。
答案2
如果使用的话,它能直接连接吗ssh -o GSSAPIAuthentication=no user@host
?
如果是这样,系统可能会在决定使用 GSSAPI 方法时挂起。对我来说,只有一个主机这样做,所以我只是~/.ssh/config
为该主机禁用了 GSSAPI:
Host badHostName
GSSAPIAuthentication no
我从http://germanrumm.eu/fixing-ssh-login-delay-how-to-disable-gssapi-with-mic-on-ubuntu-linux/但始终没有真正了解其原因。
答案3
另一个麻烦源可能是等待 ssh-agent 的 ssh 客户端(当然,所有配置为使用它的客户端)。如果 ssh'ing任何地方卡在
debug1: 已收到 SSH2_MSG_NEWKEYS
然后检查ps auxw | grep askpass
其可能未引起您注意的对话框。
PS:这相当不是罪魁祸首,但我还没有谷歌搜索更多相关内容问题到目前为止。
答案4
我希望你现在已经解决了你的问题 ;) 但万一其他人来找我,我的问题是一个包修改了我的.bashrc
并导致它挂起。这会在 ssh 身份验证后发生(因此ssh -v
实际上没有显示任何有用的东西)。补救的几个选项是:
以另一个用户身份登录并编辑文件
.bashrc
(或可能导致错误的其他来源)使用不同的 shell 登录
ssh -t user@host /bin/sh
,然后清理有问题的文件