遇到 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
或两者chgrp
)chmod g+w
,然后您可以scp
直接修改它们。