最近我安装了 PAM 以及在我的 RHEL 7.5 机器上通过 AD 启用 ssh 身份验证所需的所有必要软件包。
当我尝试使用“ssh user@domainname@hostname”进行 SSH 时,它会要求我输入密码,并且当我输入密码时,我收到错误:连接由未知端口 65535 关闭。
这发生在多台运行 RHEL 7.5 的机器上。sssd 用于绑定到 AD,没有防火墙,系统时间与 AD 服务器同步,适当的组已添加到permitted_groups,并且帐户未被锁定。跟踪 /var/log/secure 显示以下错误:
sshd[12752]: reprocess config line 145: Deprecated option RhostsRSAAuthentication
sshd[12752]: pam_krb5[12752]: account checks fail for 'user@domainname': user disallowed by .k5login file for 'user@domainname'
sshd[12752]: Failed password for user@domainname from ip port 53166 ssh2
sshd[12752]: fatal: Access denied for user user@domainname by PAM account configuration [preauth]
我已经重新启动了 sssd 和 sshd,但没有任何效果。
任何帮助将不胜感激。
答案1
当您的客户端遇到几种不同情况,由于“中间”发生的某些事情而根本无法访问远程服务器时Connection closed by UNKNOWN port 65535
,可能会报告非常无用的 ssh 错误。ssh
sshd
这可能非常难以调试,因为在某些情况下远程 sshd 不知道有人曾尝试连接它。
(此外,65535 对于计算机用户来说是一个“特殊”数字2^16 - 1
,也就是0xFFF
最大无符号 16 位整数(也是最大端口号))
案例A--(来自 @doug 的原始问题) - 在这种情况下,远程 sshd 获得了传入连接,并将身份验证委托给 Linux 库用于 PAM(可插入身份验证模块)。PAM 转交给 KRB5 或 SSS,但失败了。因此,可怜的远程 sshd 得到的只是一个大没有来自 PAM。...它从未进入“正常”协议解析和错误检查,这将使其返回更有用的错误消息。
(它是可能的旧的 Kerberos 配置选项(例如 gssapiauthentication)可能会有类似的行为)
案例 B——在我们的案例中,当网络防火墙阻止从开发/测试机器到暂存/生产机器的连接时,我们会看到这种情况。根据您的网络,您可能能够使用tcping $remote_hostname 22
或(帮助较小)获得更多诊断信息:UDP 网络测试,如ping $remote_hostname
、traceroute $remote_hostname
或这些命令的 IPv6 版本。您当地的网络工程师可以帮助确认和修复。
在这种情况下,赠品就是ssh -vvv $remote_hostname
到达这一点:
debug1: identity file /home/ddickinson/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.6
...暂停 60 秒(或其他超时时间),然后:
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
案例 C——ProxyCommand
本地委托的某些类型的故障ssh
也可能导致无益的失败。检查以下输出中是否存在与“proxy*”或“tunnel*”相关的选项:
ssh -G $remote_hostname