我们有一个 Windows 批处理脚本,它通过 PLINK (putty) 自动连接到 Linux 服务器。没有公钥私钥身份验证,用户和密码都在脚本中。
在我们的 Linux 服务器上,我们有几个 sshd 日志条目 (/var/log/messages):
sshd[7645]: Connection closed by xxx [preauth]
出现这样的消息可能是什么原因?
“preauth”可能意味着“预身份验证”?
有时在条目中,“关闭者”中有Windows客户端的IP地址,有时在“关闭者”中存在Linux服务器的IP地址。有谁知道消息中客户端IP地址和主机IP地址之间的区别吗?
答案1
sshd
如果客户端在一段时间内没有尝试进行身份验证,服务器将断开连接,如选项中所述-g
。
-g login_grace_time
Gives the grace time for clients to authenticate themselves
(default 120 seconds). If the client fails to authenticate
the user within this many seconds, the server disconnects
and exits. A value of zero indicates no limit.
因此,我怀疑如果您在日志中看到带有此消息的服务器 IP,则连接已关闭,因为在此宽限时间内没有进行身份验证尝试。当您看到客户端 IP 时,这意味着用户关闭了客户端(或脚本终止)而没有进行身份验证尝试。
答案2
Host key verification failed.
就我而言,当我在 ssh 客户端遇到错误时,这些消息出现在 /var/log/secure 中。这是导致无需登录尝试即可建立连接的情况之一。
答案3
我遇到了与您非常相似的问题(尽管我使用的是公钥)。
事实证明,我的问题(也可能是你的问题)是因为我的主目录是 NFS 安装,而 selinux(在 CentOS 7 上)抛出了一些错误(很难追踪)。不过修复方法很简单。
setsebool -P use_nfs_home_dirs 1
答案4
此类消息的另一个来源是ssh-keyscan
。它只是获取服务器主机密钥并断开连接,而不进行任何身份验证。