如何以 Sudo 用户身份执行 SCP

4 sudo scp

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

作为 sudo 用户,从一个盒子到另一个盒子执行 SCP 的最佳方法是什么。有两个服务器

服务器A

10.152.2.10

/home/oracle/export/files.txt

用户:部署

服务器B

10.152.2.11

/家/甲骨文/进口/

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

我只想将文件从服务器 A 复制到服务器 B 作为 sudo 用户...

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

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

为了自动配对,我编写了脚本

#!/bin/sh
ssh deploy@lnx120 
sudo /usr/local/bin/tester "./tester/deploy.sh"
Run Code Online (Sandbox Code Playgroud)

我已经为部署用户生成了私钥,所以它允许我在没有密码的情况下以部署用户的身份登录。在执行 sudo 命令之后,它会将用户切换到测试人员...

之后什么也没有发生......我的意思是脚本没有被执行......有没有办法以不同的方式完成这个......

use*_*686 10

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

#!/usr/bin/perl
use strict;
my $added = 0;
$added ||= s/^scp /sudo $&/ for @ARGV;
exec "ssh", @ARGV;
Run Code Online (Sandbox Code Playgroud)

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

scp -S ./ssh-wrapper somefile anotherfile hostname.domain.tld:path/

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