小编典典

带Paramiko和RSA密钥文件的嵌套SSH

python

我正在尝试使用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")

阅读 240

收藏
2021-01-20

共1个答案

小编典典

如果需要使用存储在跳转服务器上的私钥,则不能使用端口转发来实现跳转。

  • 将密钥下载到本地计算机。如果您不想将密钥实际存储在本地计算机上,则可以仅通过Python代码将其下载到内存中。。

  • 否则,您将必须通过ssh在跳转服务器上运行客户端来实现跳转,该服务器将获取存储在其中的私钥(通常是normally脚的解决方案):

    ssh.exec_command("ssh root@Y pwd")
    
2021-01-20