我发现了很多关于调试为什么不能通过 SSH 连接的问题,但它们似乎都要求您仍然可以访问系统 - 或者说没有这些就什么也做不了。就我而言,我无法直接访问系统,但我可以使用恢复控制台访问文件系统。
所以情况就是这样:我的提供商今天进行了一些内核更新,在此过程中还重新启动了我的服务器。出于某种原因,我无法再通过 SSH 连接,而是获得了 ssh:连接到主机 mydomain.de 端口 22:连接被拒绝
我不知道是 sshd 没有运行,还是某些东西(例如 iptables)阻止了我的 ssh 连接尝试。我查看了日志文件,/var/log 中的所有文件都没有提及 ssh,并且 /var/log/auth.log 是空的。在内核更新之前,我可以正常登录并使用证书,这样每次从本地计算机连接时都不需要密码。
到目前为止我尝试过的:
我在 /etc/rc*.d/ 中查找了指向 /etc/init.d/ssh 脚本的链接,但没有找到。所以我期待 sshd 在启动时没有正确启动。由于我不能在我的系统中运行任何程序,我不能使用 update-rc 来改变它。我尝试使用 ln -s /etc/init.d/ssh /etc/rc6.d/K09sshd 手动创建链接并重新启动服务器 - 这并没有解决问题。我不知道是否有可能这样做,在rc6.d中创建它是否正确以及K09是否正确。我只是从 apache 复制的。
我还尝试更改我的 /etc/iptables.rules 文件以允许所有内容:
# 由 iptables-save v1.4.0 在 2009 年 12 月 10 日星期四 18:05:32 生成 *破坏 :路由前接受 [7468813:1758703692] :输入接受[7468810:1758703548] :前向接受 [3:144] :输出接受[7935930:3682829426] :POSTROUTING 接受 [7935933:3682829570] 犯罪 # 于 2009 年 12 月 10 日星期四 18:05:32 完成 # 由 iptables-save v1.4.0 在 2009 年 12 月 10 日星期四 18:05:32 生成 *筛选 :输入接受[7339662:1665166559] :前向接受 [3:144] :输出接受[7935930:3682829426] -A 输入 -i lo -j 接受 -A 输入 -p tcp -m tcp --dport 25 -j 接受 -A 输入 -p tcp -m tcp --dport 993 -j 接受 -A 输入 -p tcp -m tcp --dport 22 -j 接受 -A 输入 -p tcp -m tcp --dport 143 -j 接受 -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A 输入 -p tcp -m tcp --dport 80 -j 接受 -A 输入 -p tcp --dport 8080 -s 本地主机 -j 接受 -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7 -A 输入 -j 接受 -A 向前 -j 接受 -A 输出 -j 接受 犯罪 # 于 2009 年 12 月 10 日星期四 18:05:32 完成 # 由 iptables-save v1.4.0 在 2009 年 12 月 10 日星期四 18:05:32 生成 *nat :PREROUTING 接受 [101662:5379853] :POSTROUTING 接受 [393275:25394346] :输出接受[393273:25394250] 犯罪 # 于 2009 年 12 月 10 日星期四 18:05:32 完成
我不确定这是正确完成的还是有任何影响。我也没有在 /var/log 的任何文件中找到任何提及 iptables 的内容。
那我还能做什么?感谢您的帮助。
ps:按照lain的建议添加crontab行后,我可以在文件/var/logauth.log中找到以下内容
3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:sshd 版本 OpenSSH_5.3p1 Debian-3ubuntu5 3 月 7 日 21:13:58 mysubdomain sshd[64900]: debug1: read PEM private key done: type RSA 3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:检查黑名单文件 /usr/share/ssh/blacklist.RSA-2048 3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:检查黑名单文件 /etc/ssh/blacklist.RSA-2048 3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:私有主机密钥:#0 type 1 RSA 3 月 7 日 21:13:58 mysubdomain sshd[64900]: debug1: read PEM private key done: type DSA 3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:检查黑名单文件 /usr/share/ssh/blacklist.DSA-1024 3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:检查黑名单文件 /etc/ssh/blacklist.DSA-1024 3 月 7 日 21:13:58 mysubdomain sshd[64900]:debug1:私有主机密钥:#1 type 2 DSA
连接被拒绝表明 sshd 没有运行。尝试从命令行以调试模式运行 sshd 以查看是否有任何错误消息。
/usr/sbin/sshd -f /etc/ssh/sshd_config -D -d
编辑:
由于您无权运行上述内容,请尝试将其放入 @reboot cron 作业中
添加
@reboot root /bin/mkdir -p -m0755 /var/run/sshd && /usr/sbin/sshd -f /etc/ssh/sshd_config -d &>/var/log/sshd_debug
Run Code Online (Sandbox Code Playgroud)
进入 /etc/crontab
Ubuntu sshd 要求 /var/run/sshd 目录存在。