我有一个远程 Ubuntu 16.04 服务器,关闭并重新启动后无法通过 ssh 访问。我在系统安装期间安装了 OpenSSH 服务器,并且从未禁用过它(例如systemctl disable
或update-rc.d remove
)。
为了找出错误,我以救援模式重新启动了服务器(通过服务器托管商的 Web 界面)并 chroot 到根分区:
root@rescue ~ # mount /dev/md2 /mnt
root@rescue ~ # chroot /mnt
到目前为止,文件系统看起来不错,但没有启动日志(/var/log/boot
或类似内容)。系统日志恰好在我关闭服务器时结束,似乎没有添加新条目。
我发现按照 16.04 我必须使用 journalctl 来获取日志,因此我尝试:
root@rescue ~ # journalctl
No journal files were found.
-- No entries --
ssh 服务器可能不是主要问题,因为我的网络配置相当复杂,包括到故障转移 IP 的路由(服务器是 ha-cluster 的一个节点)。其他一些服务可能出现故障,导致 ssh 服务器无法启动。
尽管如此,我还是尝试在启动时启用 ssh:
root@rescue ~ # systemctl enable ssh
Synchronizing state of ssh.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable ssh
但无济于事,shutdown -r now
我仍然无法访问服务器。nmap 给我
Host is up (0.037s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
135/tcp filtered msrpc
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1720/tcp filtered H.323/Q.931
我就是找不到办法找出问题所在。有人能给我提示一下吗?
答案1
事实证明我犯了一个错误,/etc/fstab
因此无法将任何内容写入日志文件。
答案2
我认为之前
chroot /mnt
你必须
sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys