我在机器 A 上,我想从 A 运行 bash 脚本,通过scp
.这些文件存储在需要root
访问权限的路径中,但在 B 中root
禁用了远程访问ssh
。我无法更改该配置。
标准scp
语句不起作用,因为在 A 上执行root
期间没有要求我输入 B 的密码。scp
我能怎么做?
答案1
我可以让它在我的盒子上工作,但我不确定sudoers
选项是否requiretty
会破坏它。
sudo
在机器 B 上创建将用于询问密码的程序。例如/home/myname/askpass.sh
,chmod
它+x
#!/bin/bash
echo "my_password"
在机器上创建连接脚本,该脚本将为远程命令建立 ssh 连接并将相关命令scp
注入。例如sudo
称它为./fakessh.sh
chmod
+x
#!/bin/bash
oldargs=( $@ )
newargs=( )
while : ; do
[ "${oldargs[0]}" == "scp" ] && break
newargs+=( "${oldargs[0]}" )
oldargs=( "${oldargs[@]:1}" )
done
newargs+=( 'export SUDO_ASKPASS=/home/myname/askpass.sh' \; exec sudo -A -- "${oldargs[@]}" )
exec ssh "${newargs[@]}"
请注意,上面的脚本引用了/home/myname/askpass.sh
,请根据需要更新路径。
现在scp
几乎可以正常运行:
scp -S ./fakessh.sh user@hostname:/etc/shadow ./
这对我有用。 YMMV。
ncat
如果您可以运行类似或socat
的东西sudo
,并指向自定义侦听端口,我可以想到其他黑客方法scp
,但从安全角度来看,这变得很愚蠢。