我有一台运行 Ubuntu 20.04 LTS 的服务器。防火墙 (ufw) 已禁用,它正在接受端口 22 上的传入 ssh 连接。我有一台运行 RHEL7 的服务器,该服务器很久以前就设置好了,它可以很好地与 Ubuntu 服务器进行传出 ssh 通信。
我现在用 RHEL8 替换它。从 RHEL8 到旧版 RHEL7 服务器的传出 ssh 工作正常。但是,如果我尝试连接到 Ubuntu 服务器,它会在尝试连接后挂起。示例输出:
$ ssh -v [email protected]
OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: configuration requests final Match pass
debug1: re-parsing configuration
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: Connecting to example.com [123.456.712.34] port 22.
当我从旧版 RHEL7 服务器使用相同的命令时,“连接到”行后面紧接着以下内容:
debug1: Connection established.
这表明问题出在 Ubuntu 端,Ubuntu 不接受新配置的 RHEL8 服务器的调用,但愿意接受旧的 RHEL7 服务器的连接。如果我们几年前在设置 RHEL7 服务器时做了一些特别的事情,那么它已经消失在时间的迷雾中了。
这看起来像是防火墙的问题,但我已经确定联邦快递已禁用。据我所知,SELinux(安装在两个 RHEL 服务器上)不应阻止传出连接。为了确保万无一失,我已禁用SELinux,但这并没有什么区别。
当我在 Ubuntu 服务器上检查时/var/log/auth.log
,我看到“接受来自...的用户的公钥”以及 RHEL7 服务器的 IP 地址,但没有与 RHEL8 服务器的 IP 地址(使用相同的公钥设置)关联的日志条目。
但是,检查 RHEL 服务器上的防火墙设置后,我们发现了差异。当我检查端口 22 的设置时,RHEL7 服务器会产生一些输出,而 RHEL8 则不会。输出:
RHEL7:
$ sudo iptables-save | grep 22
:INPUT ACCEPT [102275:8483105]
:PREROUTING ACCEPT [11210340:9163905227]
:INPUT ACCEPT [11210340:9163905227]
:PREROUTING ACCEPT [11210340:9163905227]
-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
$
RHEL8
$ sudo iptables-save | grep 22
$
所以设置也不同。
然而,停止防火墙在 RHEL8 服务器上没有效果...:
$ sudo systemctl stop firewalld
$ sudo systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2020-12-19 14:48:34 CET; 2min 41s ago
…
停止后防火墙,我仍然无法做到远程控制到 Ubuntu 服务器。
关于如何修复此问题有什么建议吗?