如何以 Sudo 用户身份执行 SCP

如何以 Sudo 用户身份执行 SCP

可能重复:
使用 sudo scp 到远程服务器

以 sudo 用户身份从一台机器向另一台机器执行 SCP 的最佳方法是什么?有两台服务器

服务器 A

10.152.2.10

/home/oracle/export/files.txt

用户:部署

服务器 B

10.152.2.11

/主页/Oracle/导入/

用户:部署
Sudo 用户:/usr/local/bin/tester

我想要的只是以 sudo 用户身份将文件从服务器 A 复制到服务器 B......

为了做到这一点,首先我通常以部署用户的身份登录目标服务器,然后以无密码的 sudo 用户身份切换。

之后使用 SCP 复制文件,这是我执行此活动的正常方式...

为了实现自动化我编写了脚本

#!/bin/sh
ssh deploy@lnx120 
sudo /usr/local/bin/tester "./tester/deploy.sh"

我已经为部署用户生成了私钥,因此它允许我以部署用户身份登录而无需密码。执行 sudo 命令后,它会将用户切换为测试人员...

之后什么都没有发生..我的意思是脚本没有被执行...有什么办法可以用不同的方式来实现这一点吗...

答案1

您可以制作一个包装器ssh,如下所示:

#!/usr/bin/perl
use strict;
my $added = 0;
$added ||= s/^scp /sudo $&/ for @ARGV;
exec "ssh", @ARGV;

使其可执行,并scp像这样运行:

scp -S ./ssh-wrapper 某个文件 另一个文件 主机名.域.tld:路径/

sudo这仅在远程服务器不需要密码(或已缓存)时才有效,但总比没有好。

答案2

如果我理解正确的话,您需要 sudo 是因为该文件位于您的普通用户无权访问的地方?并且您没有 root 密码,或者由于某种原因不想使用它?

一种解决方案是将文件复制到普通用户可以访问的位置(如果需要,也可以更改文件的访问权限),然后执行 scp。

相关内容