通过 scp 从需要 root 访问权限的远程计算机复制文件(禁用远程 root 访问权限)

通过 scp 从需要 root 访问权限的远程计算机复制文件(禁用远程 root 访问权限)

我在机器 A 上,我想从 A 运行 bash 脚本,通过scp.这些文件存储在需要root访问权限的路径中,但在 B 中root禁用了远程访问ssh。我无法更改该配置。

标准scp语句不起作用,因为在 A 上执行root期间没有要求我输入 B 的密码。scp

我能怎么做?

答案1

我可以让它在我的盒子上工作,但我不确定sudoers选项是否requiretty会破坏它。

sudo在机器 B 上创建将用于询问密码的程序。例如/home/myname/askpass.shchmod+x

#!/bin/bash
echo "my_password"

在机器上创建连接脚本,该脚本将为远程命令建立 ssh 连接并将相关命令scp注入。例如sudo称它为​./fakessh.shchmod+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,但从安全角度来看,这变得很愚蠢。

相关内容