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

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 输入 -m conntrack --ctstate 相关,已建立 -j 接受
-A 输入-p tcp -m tcp --dport 80 -j 接受
-A 输入-p tcp --dport 8080 -s localhost -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 生成
*自然
:路由前接受 [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: 读取 PEM 私钥完成:输入 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 类型 1 RSA
3 月 7 日 21:13:58 mysubdomain sshd[64900]: debug1: 读取 PEM 私钥完成:输入 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 类型 2 DSA

答案1

连接被拒绝表明 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

进入/etc/crontab

Ubuntu sshd 要求 /var/run/sshd 目录存在。

答案2

您可以尝试将日志记录(SSH 流量)添加到防火墙规则并重新启动计算机。这样,您应该能够验证数据包是否到达目的地(因此 sshd 不起作用)。

关于这一部分:

我尝试使用 ln -s /etc/init.d/ssh /etc/rc6.d/K09sshd 手动建立链接并重新启动服务器 - 但这并不能解决问题。

运行级别 6 用于重新启动,所以这不是您感兴趣的。而 K09sshd 中的 K 表示终止。;-) 尝试使用奥德克看看会发生什么。

答案3

我尝试使用 ln -s /etc/init.d/ssh /etc/rc6.d/K09sshd 手动建立链接并重新启动服务器 - 这并不能解决问题

您几乎答对了。K* 名称会导致服务停止。S* 名称会导致服务启动。

rc6.d 用于进入运行级别 6(表示“重新启动”)时控制子系统。

您希望在运行级别 3(普通多用户)和 5(多用户 + X)下启动服务。将 /etc/rc.3d/S90sshd 和 /etc/rc5.d/S90sshd 符号链接到 /etc/init.d/sshd。这将导致 sshd 在系统启动时启动。

答案4

我尝试使用 ln -s /etc/init.d/ssh /etc/rc6.d/K09sshd 手动建立链接并重新启动服务器 - 这并不能解决问题

尝试添加指向 rc3.d 而不是 /etc/rc6.d 的链接(ln -s /etc/init.d/ssh /etc/rc3.d/S99sshd)

相关内容