我刚刚使用 (root) 将 (Linode VM) Ubuntu 9.04 升级到 9.10 do-release-upgrade
。现在,ssh 无法正常工作。
起初,我只是收到“连接超时”的提示。因此,我访问了 Linode 网站并使用了他们的“lish ajax 控制台”。不确定这与 ssh 有何不同,因为它使用相同的 root 密码(仍然有效)。在那里,我发现文件系统被挂载为只读。我通过执行 修复了这个问题mount -t ext2 -o rw,remount /dev/hda6 /
,但仍然没有 ssh 连接。然后我(仍然使用 Linode 网站上的“lish ajax 控制台”)使用命令dhclient eth0
,现在我收到的是“连接被拒绝”而不是“连接超时”,这感觉有点像进步,但并不多。
所以,我可以说从 9.04 升级到 9.10 的过程并不顺利。我仍然可以使用 Linode 的“lish ajax 控制台”查看我的所有文件,但我不知道如何让 ssh 工作,而且不出所料,该服务器上的网站也无法再访问。
由于“lish ajax console”使用相同的 root 密码,我猜它仍然有效,而且我到目前为止查找的所有文件都在那里,所以并非一切都丢失了。但是,我必须做些其他事情才能让 ssh 再次工作。有什么想法吗?
ps 好的,谢谢提示,这是目前的结果:
/etc/init.d/ssh status
could not access PID file for sshd
/etc/init.d/ssh start
Starting OpenBSD Secure Shell server sshd
/etc/init.d/ssh status
sshd is running
这听起来不错,但是当我尝试插入时,我得到了:
服务器拒绝分配 pty stdin:不是 tty
我在网上搜索了一下,发现可以尝试这个:
/sbin/MAKEDEV pty
/sbin/MAKEDEV tty
但并没有任何改善。
ifconfig eth0
这确认了 IP 地址(“inet addr:”)是我所期望的。
iptables -I INPUT -p tcp --dport -j ACCEPT
bash: iptables: command not found
我觉得有点奇怪,它居然没有听说过 iptables,但我知道什么呢?我在 auth.log 中所能找到的只有这个,不是现在的,而是几个小时前的。
root@localhost:/var/log# tail -f /var/log/auth.log
Apr 16 15:05:50 li9-111 sshd[10704]: pam_unix(sshd:auth): authentication failure; logname= uid=0 eui
d=0 tty=ssh ruser= rhost=60.10.58.156 user=root
Apr 16 15:05:52 li9-111 sshd[10704]: Failed password for root from 60.10.58.156 port 32776 ssh2
Apr 16 15:05:58 li9-111 sshd[10706]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.10.58.156 user=root
Apr 16 15:06:00 li9-111 sshd[10706]: Failed password for root from 60.10.58.156 port 33096 ssh2
Apr 16 15:06:03 li9-111 sshd[10708]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.10.58.156 user=root
Apr 16 15:06:05 li9-111 sshd[10708]: Failed password for root from 60.10.58.156 port 33588 ssh2
Apr 16 15:06:11 li9-111 sshd[10710]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.10.58.156 user=root
Apr 16 15:06:14 li9-111 sshd[10710]: Failed password for root from 60.10.58.156 port 33927 ssh2
Apr 16 15:06:16 li9-111 sshd[10712]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.10.58.156 user=root
Apr 16 15:06:18 li9-111 sshd[10712]: Failed password for root from 60.10.58.156 port 34404 ssh2
在系统日志中我所能找到的只有以下内容:
root@localhost:/var/log# tail -f /var/log/syslog
Apr 16 15:05:19 li9-111 mysqld: Active alarms: 0
Apr 16 15:05:19 li9-111 mysqld: Max used alarms: 1
Apr 16 15:05:19 li9-111 mysqld: Next alarm time: 0
Apr 16 15:05:19 li9-111 mysqld:
Apr 16 15:05:19 li9-111 mysqld: Begin safemalloc memory dump:
Apr 16 15:05:19 li9-111 mysqld:
Apr 16 15:05:19 li9-111 mysqld: End safemalloc memory dump.
Apr 16 15:05:48 li9-111 dhclient: DHCPREQUEST of 67.18.176.111 on eth0 to 72.14.180.19 port 67
Apr 16 15:05:48 li9-111 dhclient: DHCPACK of 67.18.176.111 from 72.14.180.19
Apr 16 15:05:48 li9-111 dhclient: bound to 67.18.176.111 -- renewal in 35362 seconds.
最后,
root@localhost:/var/log# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 891/sshd
tcp6 0 0 :::22 :::* LISTEN 891/sshd
非常感谢大家迄今为止提供的所有帮助,任何进一步的建议都将不胜感激。最后说明:为了防止上述某些操作在重新启动之前不会生效,我尝试了重新启动,结果是倒退了一步(尝试 ssh 时没有响应)。因此,我回到顶部并尝试:
root@localhost:~# /etc/init.d/ssh status
* could not access PID file for sshd
root@localhost:~# /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd [ OK ]
root@localhost:~# /etc/init.d/ssh status
* could not access PID file for sshd
这似乎有点倒退。无论如何,任何帮助或建议都会受到感谢。
答案1
首先确保 ssh 正在运行,您可以通过以下方式执行此操作
/etc/init.d/ssh status
如果它没有运行,请使用相同的命令来启动它,但将状态替换为启动。
如果这不起作用,请检查您的接口配置以确保您连接到正确的 IP。
ifconfig eth0
由于您使用 dhcp 获取 IP,因此这种情况可能会发生变化。
您的防火墙有可能阻止了它,您可以通过以下方式打开端口 22(默认情况下应该打开):
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/var/log/auth.log and /var/log/syslog
最后,在尝试连接时发布内容。
答案2
好吧,看来问题出在 Linode 上。在虚拟机的配置文件中,它的“内核”设置为“Latest 2.6 Legacy (2.6.18.8-linode22)。我不得不将其更改为“Latest 2.6 Paravirt(2.6.38-linode31)”,然后 ssh(以及从此服务器提供的网站)全部恢复。呼!
我猜想 linode 配置的内核仅适用于 9.10 之前的 Ubuntu 版本。坦率地说,我以为操作系统升级过程会解决该问题,但是我并不真正了解 VM 配置文件和 VM 操作系统如何交互,所以我遇到麻烦也就不足为奇了。
我认为也许可以吸取的教训是,如果你让你的服务器操作系统过时到这种程度,那么升级路径所需的一些奇怪的东西并不总是在最新的文档中,因为我的天啊,谁还在使用那么老的版本。尽管如此,在尝试升级到下一个较新的操作系统之前,我必须深吸一口气,思考一下。
我想对于我的下一个服务器故障问题,我需要询问服务器操作系统升级策略......