我使用Paramiko在远程服务器上执行bash脚本。在其中一些脚本中,存在到其他服务器的ssh连接。如果只使用bash而不使用Python,则DSA密钥将被第一个远程服务器上的bash脚本转发并使用,以连接到第二个远程服务器。当我使用Paramiko时,情况并非如此。在
Bash示例:
Jean@mydesktop:~ & ssh root@firstserver
root@firstserver:~ # ssh root@secondserver hostname
secondserver.mydomain.org
使用Paramiko:
^{pr2}$输出为:
[SEND ] >> hostname
[RECEIVE] << [root@firstserver ~]# hostname ; echo CLIENT_EXPECT_CMD_OK
[RECEIVE] << firstserver.mydomain.fr
[SEND ] >> ssh root@secondserver hostname
[RECEIVE] << [root@firstserver ~]# ssh root@secondserver hostname ; echo CLIENT_EXPECT_CMD_OK
[RECEIVE] << Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
我试过了:
self.transport = self.ssh_client.get_transport()
self.channel = self.transport.open_forward_agent_channel()
而不是:
self.channel = self.ssh_client.invoke_shell()
但是我得到一个错误:
paramiko.ssh_exception.ChannelException: Administratively prohibited
有人知道这是否可能吗?我发现一些说明就是这样,但我不知道怎么做。在
{cd1>连接时设置:
好的,现在可以了。我找到了这些有用的帖子:
Add paramiko ssh agent forwarding (optional) #4100
open_forward_agent_channel vs. open_session #89
最终代码是:
输出为:
^{pr2}$启用代理转发的代码的重要部分是:
相关问题 更多 >
编程相关推荐