无法通过 ssh 进入 Linux 机器

无法通过 ssh 进入 Linux 机器

我有一台运行 Centos 7 的 Linux 机器。我尝试使用 putty 或 WinScp 通过 ssh 进入该机器,但无法做到。

我已经使用以下命令打开了 ssh 端口: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

我已将公钥放入 authorized_key 文件中。我已编辑该/etc/ssh/sshd_config文件并启用PublickeyAuthentication

之后我重新启动了 sshd 服务:systemctl restart sshd.service

但我还是无法访问服务器。我以为可能是网络连接问题,但我可以从机器上网。连接时我从 putty 收到的错误是:Network error: Connection timed out

我遗漏了什么?我该如何解决这个问题?任何帮助都将不胜感激。谢谢。

答案1

您需要逐步正确地解决问题。

  1. 端口是否打开(netstat)
  2. 数据包是否到达主机(tcpdump)
  3. 机器如何回复;回复数据包去往何处(tcpdump)
  4. 检查所有防火墙规则;其他规则可能匹配(iptables)
  5. 检查路由;你甚至可能有多个路由表(ip route)

如果您可以暂时关闭防火墙,排除故障将会更容易,但这并不总是一种选择。

答案2

我相信--dport这是 tcp 模块的一部分,需要-m tcp使用该选项。接受传入的 tcp 端口 22 的完整命令将是:

sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

答案3

iptables -A INPUT -i venet0 -m state --state ESTABLISHED,RELATED -j ACCEPT -m comment --comment "ALLOW ESTABLISHED connections"
iptables -A INPUT -i venet0 -p tcp --dport 22 -m state --state NEW -j ACCEPT -m comment --comment "ALLOW new SSH connections"

替换venet0为你的网络接口,例如eth0

如果不起作用,netstat -tulpen | grep ':22'lsof -4和的输出是什么iptables -L -v -n

-m tcp不需要--dport

相关内容