![通过 DHCP 服务器连接 SSH](https://linux22.com/image/797080/%E9%80%9A%E8%BF%87%20DHCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9E%E6%8E%A5%20SSH%20.png)
我已经设置了 DHCP 服务器,但似乎无法通过 SSH 连接任何东西。
当我登录到服务器本身时,我可以使用 SSH。但是当我将任何计算机连接到 DHCP 服务器时,该计算机可以使用 SSH,但我使用 SSH 连接的每台服务器都会要求输入密码,而正常行为(未连接到 DHCP 服务器时)则不需要。
以下是与端口 22 相关的 iptables 脚本的内容。
$IPT -t nat -A PREROUTING -i $LAN -p tcp --dport 22 -j REDIRECT --to-port 22
$IPT -A FORWARD -i $LAN -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i $LAN -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
$IPT -A INPUT -i $LAN -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
我是否遗漏了什么?
答案1
发生这种情况的原因是服务器的 IP 地址已更改,并且您的 ssh 客户端正在检查其拥有的另一台曾经拥有该 IP 地址的服务器的密钥。
处理此问题的正确方法是将 DHCP 配置为始终为同一台机器提供相同的 IP 地址,方法是将其与机器的 MAC 地址绑定。
但是如果您想保留相同的设置,并且仍然使用 ssh,那么您需要通过发出以下命令来清除您尝试连接的机器的存储密钥:
ssh-keygen -R machine_host_name
替换machine_host_name使用适当的内容,然后尝试 ssh。
答案2
知道了。
我删除了与 SSH/端口 22 相关的所有内容。
我添加了以下几行:
$IPT -A INPUT -i $LAN -p tcp --destination-port 22 -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -o $LAN -p tcp --destination-port 22 -m state --state NEW -j ACCEPT