当 SSH 在 RHEL 机器上使用 AD Creds 时,连接被 UNKNOWN 端口 65535 关闭

Dou*_*oug 5 linux ssh active-directory pam

最近,我安装了 PAM 以及在我的 RHEL 7.5 机器上通过 AD 启用 ssh 身份验证所需的所有必要软件包。

当我尝试使用“ssh user@domainname@hostname”进行 SSH 连接时,它会询问我的密码,一旦我输入密码,我就会收到错误消息:连接被 UNKNOWN 端口 65535 关闭。

这发生在运行 RHEL 7.5 的多台机器上。sssd用于绑定AD,没有防火墙,系统时间与AD服务器同步,permit_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]
Run Code Online (Sandbox Code Playgroud)

我已经重新启动 sssd 和 sshd 没有任何运气。

任何帮助将不胜感激。

Dou*_*sDD 18

当您的客户端处于几种不同的情况下,由于“中间”发生的事情而根本无法到达远程Connection closed by UNKNOWN port 65535时,可能会报告超级无用的 ssh 错误。sshsshd

这对于调试来说可能会非常棘手,因为在某些情况下,远程 sshd 不知道有人试图连接到它。

(除此之外,65535 对于计算机人员来说是“特殊”数字2^16 - 1,又名0xFFF——最大无符号 16 位整数(也是最大端口号))

案例 A——(来自 @doug 的原始问题)——在这种情况下,远程 sshd 获得传入连接并将身份验证委托给 PAM(可插入身份验证模块)的 Linux 库。PAM 移交给 KRB5 或 SSS,但失败。所以所有可怜的远程 sshd 得到的都是来自 PAM 的拒绝。...它从未进入它的“正常”协议解析和错误检查,这将使它返回更有用的错误消息。

(旧的 Kerberos 配置选项(例如 gssapiauthentication)的行为可能类似

案例 B——在我们的案例中,当网络防火墙阻止从开发/测试机器到登台/生产机器的连接时,我们就看到了这种情况。根据您的网络,您可能可以使用tcping $remote_hostname 22、 或(不太有用)获得更多诊断信息:UDP 网络测试,例如ping $remote_hostnametraceroute $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
Run Code Online (Sandbox Code Playgroud)

...暂停 60 秒(或任何超时),然后:

kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
Run Code Online (Sandbox Code Playgroud)

案例 C——ProxyCommand您当地委托的某些类型的失败ssh也可能以无益的方式失败。检查输出中是否有任何“proxy*”或“tunnel*”相关选项:

ssh -G $remote_hostname
Run Code Online (Sandbox Code Playgroud)