sshd 问题 - 远程安装

sshd 问题 - 远程安装

我遇到了非常严重的问题。背景如下:

我有一个 vps,我尝试使用 svn,但它出错严重。我在一个网站上发现,如果你重新安装 ssh 客户端,问题就会消失,我照做了。当我在服务器上时,问题已经解决了。

问题:现在我无法再登录该服务器。它显示 ssh:

 connect to host myserver.com port 22: Connection refused

我怀疑当我重新安装 ssh 客户端时 sshd 服务器已被卸载,结果是 - 无法登录。

我有 FTP 和 PHP,并且知道 root 密码。有什么方法可以再次安装 openssh-server 吗?

我已经尝试过以下操作:

echo "MYPASSWORD" | /usr/bin/sudo -u root -S apt-get install -q openssh-server

如果我在本地机器终端上执行它,它可以工作并且会尝试安装 sshd,但是当我尝试使用 php 运行它时:

exec('echo "MYPASSWORD" | /usr/bin/sudo -u root -S apt-get install -q openssh-server', $lines);
echo $lines;

它什么都没返回。我尝试使用 ls -la,但结果是一样的 - 在终端上没问题,但在 PHP 上却不行。

你能给我一些建议如何解决这个问题吗?看来我需要成为一名黑客了 :)

答案1

如果您有 root 权限通过 ftp 进行访问,您可以执行以下操作:

  1. 将 sshd 重新安装所需的包放入某个目录中,例如 /root/sshd_reloaded。
  2. 准备一个脚本,安装该包并启动 sshd 守护程序。
  3. 将软件包通过 FTP 传输到正确的位置,并将脚本传输到/etc/cron.hourly(或 VPS 系统上的等效位置),然后将其 chmod 为 0755 以使其可执行。一般的想法是让 cron 接收它并为您完成工作。如果您不想等待,您可以将文件放入 /var/spool/cron/ 中,让 cron 执行安装和启动 sshd 的脚本。
  4. 等待 cron 获取新文件并执行作业。
  5. 登录到您的 VPS,更改 root 密码(它以明文形式通过 FTP 发送)并且不再犯错 ;)。

我建议先在本地机器上尝试一下——这样调试起来会更容易。只有当您确定所有元素都正常工作时,才可以在远程主机上执行此操作。

整个技巧取决于能够以 root 身份远程通过 FTP 访问非 chrooted 环境的能力(这不是我推荐的配置 FTP 服务器的方式)。

答案2

我认为您没有太多选择,只能尝试重新启动您的 VPS。

如果这不能解决问题,则将系统启动到恢复模式(如果可以)并查看日志和 sshd 配置文件,看看它们是否有助于缩小问题范围。

如果失败的话,您将需要寻求 VPS 提供商的帮助。

答案3

除非您的 Apache 用户具有 sudo 权限或您以 root 身份运行 Apache,否则很抱歉,您无法以这种方式安装 ssh。此外,在 Linux 上重新安装东西也几乎没有帮助;如果有的话,您应该需要重新启动 sshd 进程,如果这没有帮助,请查看其配置文件是否有问题。

一种可能的方法可能是修改本地主机上的 /etc/sudoers 文件以包含 Apache 用户的 sudo 权限,然后将该文件上传到服务器(如果您可以以 root 身份连接到那里),然后尝试再次运行脚本。但话又说回来,我怀疑即使您成功了,这也无济于事,因为问题可能出在您的配置文件中。

sudo -u root -S /etc/init.d/ssh restart您还可以尝试在为 Apache 用户授予 sudo 权限后修改脚本。

哦!还有一件事。如果您可以以 root 身份连接到那里,您还可以下载日志文件,看看它们是否揭示了您的 sshd 无法启动或崩溃的原因。

答案4

可能有多种方法可以登录到您的服务器,但我认为这些方法不在这里讨论(包含 php shell、connectback shell 等...)。

我同意上面的回答,您需要在 vps 上安装某种远程控制台。许多提供商都支持这些方法(重新启动进入 resque 模式、提供 web kvm,...)。

相关内容