通过 ssh 登录后从服务器下载文件

通过 ssh 登录后从服务器下载文件

我的服务器上已禁用 root ssh 登录,但我目前想将一些 root 拥有的文件备份到我的本地机器上。

我正在尝试找出一种方法,在通过 SSH 登录时使用 SCP 检索文件没有在我的本地机器上运行 ssh 守护程序 - 并且无需安装任何其他工具。

只是想知道这是否可能? 我不认为是。

我能想到的唯一方法是运行一个脚本,通过用户帐户登录,然后 su 到 root,然后复制 - 但我试图避免这样做,因为我不希望将我的 root pw 硬编码到本地机器上的脚本文件中。

答案1

您可以使用 rsync、ssh 和 sudo 的组合来执行您想要的操作。

如果您将本地用户“特权”添加到您的计算机,则可以允许该用户通过 sudo 运行 rsync。这将允许您远程获取只有 root 可读的文件到您的本地系统。

#
# Our backup client needs to rsync in a privileged manner.
#
privileged  ALL  = NOPASSWD: /usr/bin/rsync

一旦完成这些,您就可以运行如下命令来获取文件:

rsync --rsync-path="sudo rsync" [email protected]:/root /backup_directory

答案2

在服务器上启用 root 登录,但限制他们只能使用密码。在本地机器上设置密钥对,将公钥放入服务器上 root 的 authorized_keys 文件中,然后就可以开始了。

这与不允许 root 登录一样安全,安全率为 99.9999%。只要你保护好密钥对不被盗

如果您在密钥上设置了复杂的密码短语,则您需要在场才能运行备份,或者使用 ssh-agent 或类似的东西。或者,您可以不在密钥上设置密码短语,这样您就可以通过 root 神奇地、无密码地访问您的服务器。显然,在这种情况下,私钥被盗是一个更严重的问题,因此您需要了解这些风险并减轻它们,或者使用强密码短语。

我知道这不是您所要求的,但老实说,受密码保护的根登录是安全的(但需要注意的是,您应该及时了解 sshd 补丁)。

任何其他允许任何用户 ID 在目标服务器上拥有足够权限成为 root 的选项,而不将其置于受密码保护的 ssh 登录之后,实际上比仅通过密码允许 root 更不安全。

如果您的本地工作站具有可预测的 IP 地址,您可以使用该选项使其更加安全AllowUsers

例如

AllowUsers [email protected]

相关内容