ssh master - 远程执行su

ssh master - 远程执行su

S我有一个需要连接的服务器。

我以S用户身份连接到asdf控制主机,然后执行一些操作:

ssh -N -f -M -o ControlPath=$SSHSOCKET ${USER}@${IP} -p ${PORT} -i id_rsa
ssh -to ControlPath=$SSHSOCKET ${USER}@${IP} -p ${PORT} "su -c whoami && hostname && exit"

它按预期工作,但第二行要求我输入密码。

我正在尝试这样的修复:

echo 'qwerty' | ssh -t -to ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname && exit"

但情况变得更糟:

muxserver_accept_control: tcgetattr: Inappropriate ioctl for device
tcgetattr: Inappropriate ioctl for device
Password:

对我来说,首先必须使用 ssh asdf。我也无法建立任何其他 ssh 控制主连接。我也无法修改目标计算机上的任何配置。

我只需要以某种方式通过 ssh 切换到 root。有任何想法吗 ?

答案1

传统上,交互式密码问题是通过使用expect创建中间伪 tty 来与进程对话的命令来解决的。这是使用等效 python-pexpect 包的替代 python 版本。创建一个python文件run.py:

import sys,pexpect
(pw,cmd) = sys.argv[1:]
child = pexpect.spawn(cmd)
child.expect(r'(?i)Password:')
child.sendline(pw)
print child.read()

并使用密码和命令作为参数运行它:

python run.py  'qwerty' 'ssh -t -o ControlPath=$SSHSOCKET ${K3_USER}@${IP} -p ${PORT} "su -c whoami && hostname"'

相关内容