Python SSH paramiko问题 - 在ssh会话内部进行ssh

4
import paramiko

client = paramiko.SSHClient()
client.load_system_host_keys()
ip = '192.168.100.6'
client.connect(ip, username='root', password='mima')
i, o, e = client.exec_command('apt-get install sl -y --force-yes')
print o.read(), e.read()
client.close()

我使用了这个例子...它可以正常工作,但是我想在登录server1之后再登录server2,也就是嵌套ssh。

2个回答

4

你不能从客户端的exec_command中调用ssh命令吗?
比如:

client.exec_command('ssh user@host2 "apt-get install sl -y --force-yes"')

我想查看 'freem -m' 命令的输出,但是如何在您的查询中输入密码呢? client.exec_command('ssh user@host2 我也想在这里发送密码 "apt-get install sl -y --force-yes"') 如何实现? - rajaneesh
1
我会使用密钥(公钥放在目标服务器的.ssh/authorized_keys中,私钥保留在您从中进行ssh的计算机上)来进行授权。这比在源代码中保留密码更好、更安全。 - kender
导入 paramikoclient = paramiko.SSHClient() client.load_system_host_keys() ip = 'ip 地址' client.connect(ip, username='用户名', password='密码') i, o, e = client.exec_command("ssh 用户名@主机2 sudo netstat -antp |grep 'CLOSE_WAIT'| ") print o.read(), e.read() client.close()但这里的问题是它在等待密码。我对 Python 不熟悉,请告诉我如何发送密码或 .ssh/authorized_keys。 - rajaneesh

0

在客户端中执行"ssh"命令,而不是使用apt-get。

只要您的Python程序不存在,就无法在客户端上真正启动paramiko会话。您使用ssh启动的软件必须存在于该机器上。

也许首先通过scp复制您的软件,并使用类似于-recursive_lvl = 1的参数启动它?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接