可能重复:
使用 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。