Answers:
首先,您需要将文件复制到没有sudo且具有写访问权限的位置,
scp yourfile serverb:
然后使用sudo移动文件
ssh serverb sudo mv yourfile /path/to/the/destination
如果您没有可写的位置,请为您的用户创建一个具有写许可权的临时目录。
ssh serverb sudo mkdir tempdir && sudo chmod 777 tempdir
scp yourfile serverb:tempdir
ssh serverb mv tempdir/yourfile /path/to/the/destination
chmod 777
通常都是错误的方法。考虑如果其他人登录并知道您将要运行此代码,该怎么办。
ssh sudo
对我不起作用-抱怨“没有tty存在并且未指定askpass程序”?
使用SCP,您必须分两步进行,但是,可以使用rsync一步完成,如下所示:
rsync --rsync-path="sudo rsync" <LOCALFILE> USER@SERVER2:/root
注意:这确实需要NOPASSWD
sudo配置。如果必须输入sudo的密码,则需要两步方法。
要复制目录,您需要添加-r
参数。并-v
用于详细输出。
要将以上方法与凭据一起使用,您需要将其添加到~/.ssh/config
文件中,例如
Host SERVER2
HostName server2.example.colm
User USER
#IdentityFile ~/.ssh/custom_key.pem
sudo: sorry, you must have a tty to run sudo
已由修复 -e "ssh -tt"
。
-e "ssh -tt"
,我得到了protocol version mismatch -- is your shell clean?
。关于如何解决该问题的任何提示?
您可以使用ssh和tar来解决此问题:
ssh -t host 'sudo -v'
ssh -C host 'cd /; sudo tar cf - path/to/file/or/dir' | tar xpsf - --preserve
这首先会更新您的sudo时间戳(如果需要,请输入密码,需要输入tty(ssh -t
)),然后使用sudo远程创建tarball并在本地将其解压缩。
RedHat 5上的“ tar”要求在“ xpsf-”命令之后使用“ --preserve”选项。
tar: Invalid replacement string
,则将其移除-s
似乎可以解决问题(s
无论如何都不确定您需要什么)。非常感谢; 这太棒了。
tty_tickets
被禁用,对吗?
current server $ sudo scp username@server:source/path/filename /tmp/
它将特定文件从源复制到当前服务器中的/ tmp /