SSH 连接被拒绝 - 使用故障恢复控制台进行调试

olr*_*ehm 3 linux ssh

我发现了很多关于调试为什么不能通过 SSH 连接的问题,但它们似乎都要求您仍然可以访问系统 - 或者说没有这些就什么也做不了。就我而言,我无法直接访问系统,但我可以使用恢复控制台访问文件系统。

所以情况就是这样:我的提供商今天进行了一些内核更新,在此过程中还重新启动了我的服务器。出于某种原因,我无法再通过 SSH 连接,而是获得了 ssh:连接到主机 mydomain.de 端口 22:连接被拒绝

我不知道是 sshd 没有运行,还是某些东西(例如 iptables)阻止了我的 ssh 连接尝试。我查看了日志文件,/var/log 中的所有文件都没有提及 ssh,并且 /var/log/auth.log 是空的。在内核更新之前,我可以正常登录并使用证书,这样每次从本地计算机连接时都不需要密码。

到目前为止我尝试过的:

  1. 我在 /etc/rc*.d/ 中查找了指向 /etc/init.d/ssh 脚本的链接,但没有找到。所以我期待 sshd 在启动时没有正确启动。由于我不能在我的系统中运行任何程序,我不能使用 update-rc 来改变它。我尝试使用 ln -s /etc/init.d/ssh /etc/rc6.d/K09sshd 手动创建链接并重新启动服务器 - 这并没有解决问题。我不知道是否有可能这样做,在rc6.d中创建它是否正确以及K09是否正确。我只是从 apache 复制的。

  2. 我还尝试更改我的 /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

use*_*517 5

连接被拒绝表明 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 目录存在。