带Paramiko和RSA密钥文件的嵌套SSH
我正在尝试使用Paramiko嵌套SSH,在那儿我将从本地计算机连接到Server
X,然后从那里连接到ServerY。在这里使用用户名,密码身份验证连接到Server XI,并使用用户名和密码连接到Server Y
RSA密钥。事实是,RSA密钥托管在用于连接服务器Y的系统X中。如果我将密钥文件托管在本地PC中,并将本地PC目录路径提供给Paramiko
SSH客户端,则能够成功运行脚本。但是我想直接从服务器X读取密钥文件。我该怎么办,请帮帮我。
服务器X密钥文件=“ / home / test / keys / id_rsa”
import time
import paramiko,io
import csv
import sys
import subprocess
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('X',22, username='subhash', password='mit@12345')
vmtransport = ssh.get_transport()
dest_addr = ('Y', 22)
local_addr = ('X', 22)
vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr)
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote_file = paramiko.RSAKey.from_private_key_file('C:/Users/test/Documents/hindi/id_rsa')
client.connect('Y', username='root',pkey=remote_file,sock=vmchannel)
client_stdin ,client_stdout, client_stderr = client.exec_command("pwd")
-
如果需要使用存储在跳转服务器上的私钥,则不能使用端口转发来实现跳转。
-
将密钥下载到本地计算机。如果您不想将密钥实际存储在本地计算机上,则可以仅通过Python代码将其下载到内存中。请参阅使用Paramiko从SSH跳转主机加载密钥。
-
否则,您将必须通过
ssh
在跳转服务器上运行客户端来实现跳转,该服务器将获取存储在其中的私钥(通常是normally脚的解决方案):ssh.exec_command("ssh root@Y pwd")
-