我在 Google Cloud 上有一个装有 Ubuntu 18.04Lts 的 VPS。
每次重启时,我都必须通过或启动 ssh 守护进程服务service ssh(d) start
(systemctl start ssh(d)
ssh 和 sshd 的工作方式类似并启动所需的服务。
但在串行端口上启动服务器,然后在服务器上启动 ssh 服务非常困难且麻烦。我尝试了以下方法来配置服务以在其后启动。我在通过谷歌或 Stack 答案找到的不同文章中找到了所有方法(我不知道它们背后的原因/逻辑)。我一个接一个地做了它们,大多数情况下没有先撤消前一个。
- 尝试安装并重新安装 openssh-server。
- 运行此命令:
sudo systemctl enable sshd.service
- 运行此命令:
systemctl enable sshd
- 运行此命令:
sudo update-rc.d sshd defaults
- 运行此命令:
systemctl enable ssh.socket
/etc/rc*.d/S**ssh
检查是否存在符号链接- 注释掉特定的
ListenAddress
指令并添加ListenAddress 0.0.0.0
让 sshd 监听文件中的任何地址:/etc/ssh/sshd_config。 - 将此行编辑为文件 /etc/init.d./ssh 中的
# Required-Start: $remote_fs $syslog
此行(以在网络准备就绪之前停止 sshd 启动)。# Required-Start: $remote_fs $syslog $network
- 将此行:
sshd &
添加到文件(末尾)/etc/init.d/rc.local
。 - 编辑此文件:
/etc/rc.local
并添加此行:/etc/init.d/ssh start
- 编辑
/etc/ssh/sshd_config
文件并将其中的端口更改为 2222。还将设置PasswordAuthentication
为yes
。 - 在 root 的 crontab 文件中添加/尝试了以下几行:
@reboot mkdir -p -m0755 /var/run/sshd && systemctl restart ssh.service
。没有用,然后尝试了这个@ systemctl restart ssh.service
。然后也注释掉这个,又尝试了这个:@reboot service ssh start
。但是再次注释掉这个并尝试了最后这个:@reboot sleep 15 && /bin/systemctl restart sshd
。
即使尝试了这 15 种解决方案,ssh 服务在重启时仍然无法启动。请帮忙。
答案1
打开 /usr/lib/systemd/system/ssh.service
在 [Unit] 中更改以下行
之后=network.target auditd.service
到
之后=网络-在线的.目标 auditd.服务
这将使 sshd 启动后NetworkManager 启动接口,以便它可以绑定到特定 IP,而不是 0.0.0.0
对我有用
答案2
首先,这被证明是我运营商的少数问题之一,我无法在 Google/Stack Exchange 等上找到任何解决方案!!
最后,在花了整整两三天时间研究这个问题,看了几十个网页之后,我终于偶然解决了它。
当实例通过串口显示时,我注意到一个错误,显示它正在尝试挂载一个不再可用的硬盘。经过进一步的查看,我发现由于这个“无法找到”的磁盘,nginx 服务没有启动(我不知道这背后的原因)。正因为如此,后来我发现,ssh 守护进程服务没有启动(我不知道为什么当我这样命令时,ssh(d) 服务能够手动启动?!!
因此,解决方案是编辑文件/etc/fstab
并从中删除自动安装行。这导致 Nginx 正确加载,从而导致“sshd”正确启动/加载!!
想想看!数十个论坛都没有解决方案,碰巧提到了这一点。
答案3
就我而言,我已经通过停止、禁用、启用和重新启动服务 ssh 解决了这个问题。
- sudo systemctl 停止 ssh
- sudo systemctl 禁用 ssh
- sudo systemctl 启用 ssh
- sudo systemctl 重新启动 ssh
在 Ubuntu 18.04.06 LTS 上