我有一台主机,我正在努力允许远程访问 - 每次我尝试连接时都会被拒绝连接。
在目标上,我检查了端口是否开放:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 47081/sshd
在 sshd_config 中我已经设置了允许的用户并匹配 permitrootlogin:
AllowUsers [email protected]
PermitRootLogin no
Match Address 1.2.3.4
PermitRootLogin yes
当我尝试从 1.2.3.4 连接时,使用以下命令拒绝连接:
ssh -vv [email protected] -p 2222
回复:
# ssh -vv [email protected] -p 2222
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 5.6.7.8 [5.6.7.8] port 2222.
debug1: connect to address 5.6.7.8 port 2222: Connection refused
ssh: connect to host 5.6.7.8 port 2222: Connection refused
5.6.7.8 上的 /var/log/secure 或 /var/log/messages 中没有任何内容表明被拒绝的原因
SELinux 和 CSF 均被禁用,且其间没有其他防火墙。
我可以从我的桌面连接到 5.6.7.8:2222 而没有任何问题,但不能从另一台主机连接(我尝试了 2 个不同的远程主机)——我遗漏了什么?
答案1
在服务器上运行 tcpdump 或 tshark 并尝试从 1.2.3.4 连接。
您是否看到来自 1.2.3.4 的 SYN,后面跟着发回 1.2.3.4 的 ICMP 数据包?那么问题就出在服务器上。
您在捕获中没有看到 SYN 吗?那么路径中的某些东西阻止了 SYN,或者 1.2.3.4 上存在某些东西。
答案2
尝试从桌面和其他有问题的主机以详细程度进行连接,并查看输出有何不同:
ssh -vvv [email protected] -p 2222
如果这没有显示足够的信息,请在服务器上启动 sshd 服务
$(which sshd) -d -p 2222
这将提供更多输出。如果这没有给你明确的答案,请检查两个主机上的 ssh 版本,如果它们不同,则可能存在版本不兼容。