我在从我的机器 (macOS 10.12) 访问具有 root 访问权限的服务器 (ubuntu 16.04)时遇到了问题ssh
。情况很奇怪:我已检查sshd
在服务器上运行,并且端口 22 已打开()sudo netstat -anp | grep sshd
,并且流量未被阻止(sudo iptables -L | grep ssh
和sudo ufw verbose
);hosts.deny
也没有我的 IP 地址。
最奇怪的是 - 我可以从另一台机器登录,没有任何问题。当我nmap <server-ip>
在我的机器上运行时,它显示只有端口 80 是开放的;在另一台机器上运行相同的命令只会显示一个开放端口 - 22。我尝试从第三台机器登录 - 再次失败。不知道发生了什么。
我需要某种方式(tail -f
可能是日志)来查看当我尝试从不同的机器连接时服务器上实际发生的情况。也许这会帮助我排除故障。关于如何调试此问题,有什么建议吗?
答案1
命令man 5 sshd_config
会给你很多选项。
尽管还有更高级别,但LogLevel VERBOSE
文件中的设置可能是您所需要的。/etc/ssh/sshd_config
消息默认/var/log/auth.log
以 ip 结尾,因此您必须tail -f /var/log/auth.log
在单独的终端中查看发生了什么。
答案2
问题原来出在另一台与服务器具有相同 IP 地址的机器上。这很简单,但并不明显(叹气)。感谢回答者提供的意见。
当我检查客户端上的 arp 表并注意到出现间歇性问题的客户端有时会为同一服务器 IP 地址获取不同的 mac 地址时,我迫切地想要开始使用 Wireshark。这让我想到网络中可能存在不同的机器。这就是问题所在。
答案3
我猜你使用的网络nmap
没有防火墙权限来访问port 22
服务器上的。在另一台机器上,你只能看到port 22
服务器上的,但看不到port 80
,防火墙规则允许从那台机器连接到服务器,port 22
但不允许port 80
从那台机器连接到服务器。
检查防火墙设置中的规则是否允许您的机器和其他机器ssh
访问http
服务器。
如果这不能解决,您可以检查上述答案中提到的日志。