scp 时更改用户

scp 时更改用户

我需要在 Linux 机器之间复制文件。我用来登录的用户( )的问题myuser与可以访问该文件的用户不同。

如果我只是ssh在机器上,我可以使用 切换用户sudo su someuser,我可以在 的同时以某种方式执行此操作吗scp

在使用 WinSCP 时,我通过配置 SCP/Shell 成功完成了此操作,因此我相信一定有类似的方法可以通过纯 shell 来完成此操作。

答案1

假设您可以 ssh 访问的用户不需要密码来 sudo su 进入目标用户,您可以尝试以下操作:

dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile" 

...请注意,我仍然不相信简单地配置targetuser为仅允许通过 SSH 进行 scp/sftp/rsync 并使用 RSA 密钥对进行身份验证并不是一个更好的选择。

答案2

如果您知道其他用户 ( ) 的凭据,someuser您只需在通话中指定即可scp

man scp页面:

文件名可能包含用户和主机规范,以指示文件将复制到该主机或从该主机复制。可以使用绝对或相对路径名明确本地文件名,以避免 scp 将包含“:”的文件名视为主机说明符。还允许两个远程主机之间进行复制。

这是使用的语法:

[[user@]host:]/path/to/file

例子

您想使用 user 将文件复制/home/foo/barhost1本地主机someuser,命令如下:

scp someuser@host1:/home/foo/bar .

系统将要求您进行身份验证(密码、密钥……)。

答案3

大概是可能的,但我想说这是一种非常尴尬的方式。

我的第一个建议是以该用户身份登录。即使您没有该用户的密码,您也可以将自己的公共 ssh 密钥添加到他们的authorized_keys 中,然后使用他们的密钥进行 scp,如 rahmu 所示。

如果这是不可能的,我的第二个建议是通过 ssh、sudo 登录用户并创建要复制的文件的 tarfile 并将其放在您自己的用户可以读取的位置。然后 scp 下来该 tarfile。

答案4

-Sscp命令上使用

例如https://superuser.com/questions/87597/how-to-perform-scp-as-a-sudo-user

它将允许您执行一个脚本,就像我相信您在winscp用例中所做的那样。

相关内容