使用 SSH 和切换用户进行文件传输

使用 SSH 和切换用户进行文件传输

遇到 SCP 和 SFTP 不起作用的情况。我有用于 SSH 的 RTFM,但找不到我要找的东西。

场景是,为了将文件传输到服务器,我首先将它们 SCP 到用户目录中,然后使用有限用户帐户通过 SSH 登录,SU 到 root,然后将文件移动到需要的位置。

由于服务器不允许root登录,有没有办法用SSH、SU登录到root,并从本机传输文件?

事实上,我只是在寻找一种比我一直在做的来回练习更有效的练习。

另外,我希望评论中的任何 GUI 客户端链接能够在 Mac 上实现这一点,这样我就可以将文件从本地计算机拖放到相应的远程目录中。 SFTP GUI 客户端似乎是合理的选择,但所需的提升用户权限使其无法执行我需要的操作。

答案1

在您的本地系统上,创建您想要的框架。例如,如果要将文件复制foo到远程位置/etc/foo,则需要创建一个etc目录并将其放入foo其中。然后是tar骷髅。现在您可以按照 @Anthon 在上述问题的评论中的建议通过 cron 来执行此操作。

一步步:

在远程主机上,创建如下脚本:

#!/bin/sh
DROP="/home/YOURUSERNAME/drop.tgz"
if [ ! -s "$DROP" ]; then exit 0; fi
cd /
tar -pzxf "$DROP" && rm "$DROP"

在远程主机上,将该脚本添加到以 root 身份运行的 cron 作业中。

在本地主机上,创建框架并填充要复制的文件:

mkdir -p etc
mkdir -p var/www
cp -a foo etc/
cp -a bar var/www/
tar -pzcf drop.tgz etc var
scp drop.tgz REMOTEHOST:
rm -rf drop.tgz etc var

drop.tgz当 root 的 cron 下次运行时,将提取该文件。请注意,这将覆盖您可能不喜欢的各种内容。

假设您只需要修改几个文件,一个更安全的选择是让您的用户帐户对它们具有写权限(chown或两者chgrpchmod g+w,然后您可以scp直接修改它们。

相关内容