当前位置: 首页 > 面试题库 >

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

赵镜
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 我有以下代码: 密钥如下所示: 并且有效: 但出现以下错误: 不是有效的RSA私钥文件 这是在MacOS,Python 2.7,Paramiko 2.4.2上 我究竟做错了什么? 问题答案: 对于OpenSSH 7.8或更高版本,您必须欺骗它。运行到据称变化的密码,但重新使用旧的。使用,如果你想避免的提示,如在脚本,但要注意使你的密码对其他用户可见的。作为副作用,这将以“旧”(兼容Op

  • ----开始RSA私钥----- 私钥在这里 ----结束RSA私钥----- 如何使用privateKeyPEM字节对象?我想将它与jsch.addIdEntity()一起使用 但我真的不明白如何使用这个byte[]privateKeyPEM变量来设置标识? 这里是我的JSch部分的一个示例:

  • 问题内容: 我需要从文件中读取RSA私钥以对JWT进行签名。我发现了一些有关如何将生成的RSA密钥保存到磁盘的示例,但是没有任何示例显示如何基于文件中的预生成密钥来构建密钥结构。 密钥是这样生成的: 示例密钥: 问题答案: 的组合和应该做的伎俩: 如果您坐在的是PKCS#8编码密钥,则可以执行以下操作:

  • 问题内容: 我正在重写我在Python中编写的Bash脚本。该脚本的关键是 我在使用paramiko进行嵌套身份验证时遇到问题。我找不到适合我具体情况的任何示例,但是我能够在远程主机上找到带有 sudo的 示例。 第一种方法写入标准输入 第二个创建通道并使用类似于套接字的 send 和 recv 。 我能够使 stdin.write 与 sudo一起使用 ,但在远程主机上的 ssh 上却不起作用。

  • 我的进程: 1。生成对称密钥 2。使用对称密钥 3加密数据。使用RSA 4加密对称密钥。发送加密密钥和数据 5。使用RSA 6解密加密的对称密钥。使用对称密钥 7解密数据。已完成

  • 这是我的密码 抱歉,如果我的代码一团糟。