天道酬勤,学无止境

paramiko

当由 unittest runner 运行时,Paramiko 在身份验证期间挂起(Paramiko hanging during authentication, when runned by dint of unittest runner)

问题 再会。 我对paramiko ssh 客户端有一个奇怪的问题。 当在unittest2类/函数之外调用Connect paramiko方法并且代码由 unittest runner 运行时,它会挂起。 有一段代码,出现问题的地方: import paramiko import unittest2 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('172.18.67.10', username='root', password='secrete') _, stdout, _ = ssh.exec_command('date') class TestTest(unittest2.TestCase): def setUp(self): pass 如果我将ssh.connect移动到TestTest类或setUpModule函数中,连接将成功。 当代码由原始 Python 解释器运行时,一切正常。 当我尝试调试paramiko ,我在paramiko/auth_handler.py:AuthHandler.wait_for_response method while True循环中找出了这个问题。 有什么建议? 回答1 根据this SO

2021-12-09 04:31:02    分类:技术分享    python   paramiko

如何使用 paramiko.RSAKey.from_private_key()?(How do use paramiko.RSAKey.from_private_key()?)

问题 知道如何使用paramiko.RSAKey.from_private_key()函数吗? 我知道有一个from_private_key_file() ,但我有兴趣使用函数来解析私钥(如下所示)并将该私钥用于SSHClient 。 私钥(示例): -----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKCAIEAmfgmlY95SHXhCeBNdkhSrsG4JVbqyew845yoZRX3wcS2/doz\niVQxgx0aiOwLi+/Rnkb3PLUIwoxb/LoD/W0YMS6/NSUMt+LdH+zsjeNF2iq4rDzU\nwDSqi27q/8u/egrK7H+9HNKEVXb/87utAAm3VTM9KqKaK3VuVFrNrnsDSuECAwEA\nAQKCAIBZn3y2KiGq8BLiMNJmO4sFdnW+Jm3cw8pdo17SGItzGxJ5iX3ePkfjzhkY\nAm5mMl6OBzj6+VX0CMeywIR6C/q8HwDYSmZcuU5v76/DoW5bI6xkPrroqEz6aRE5\nyN+2hf65RD3eoPATsdrP/kxiKjZg9uG9LhgIXyVwYFs1RcqewQJBAMCVJlEYXRio\neynUtyES9HNmUGUqHKmri1FZfO56

2021-12-08 20:15:32    分类:技术分享    python   ssh   paramiko   ssh-keys

如何使用 SSH 在 Python 中远程执行脚本?(How to execute a script remotely in Python using SSH?)

问题 def execute(self,command): to_exec = self.transport.open_session() to_exec.exec_command(command) print 'Command executed' connection.execute("install.sh") 当我检查远程系统时,我发现脚本没有运行。 有什么线索吗? 回答1 下面的代码将执行您想要的操作,您可以将其调整为您的execute函数: from paramiko import SSHClient host="hostname" user="username" client = SSHClient() client.load_system_host_keys() client.connect(host, username=user) stdin, stdout, stderr = client.exec_command('./install.sh') print "stderr: ", stderr.readlines() print "pwd: ", stdout.readlines() 但是请注意,该命令将默认为您的$HOME目录,因此您要么需要在$PATH包含install.sh ,要么(很可能)您需要cd到包含install.sh脚本的目录

2021-12-08 09:24:26    分类:技术分享    python   shell   ssh   paramiko

带有 Paramiko 和 RSA 密钥文件的嵌套 SSH(Nested SSH with Paramiko and RSA key file)

问题 我正在尝试使用 Paramiko 嵌套 SSH,我将从本地计算机连接到服务器 X,然后从那里连接到服务器 Y。这里连接到服务器 XI 使用用户名、密码身份验证并使用用户名和连接到服务器 Y RSA 密钥。 问题是 RSA 密钥托管在用于连接服务器 Y 的 System 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

2021-12-06 14:27:30    分类:技术分享    python   ssh   paramiko   ssh-keys

读取用 Python Paramiko SFTPClient.open 方法打开的文件很慢(Reading file opened with Python Paramiko SFTPClient.open method is slow)

问题 我正在尝试远程读取 netcdf 文件。 我使用 Paramiko 包来读取我的文件,如下所示: import paramiko from netCDF4 import Dataset client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=’hostname’, username=’usrname’, password=’mypassword’) sftp_client = client.open_sftp() ncfile = sftp_client.open('mynetCDFfile') b_ncfile = ncfile.read() # **** nc = Dataset('test.nc', memory=b_ncfile) 但是ncfile.read()的运行速度非常慢。 所以我的问题是:有没有其他方法可以远程读取 netcdf 文件,或者有什么方法可以加速paramiko.sftp_file.SFTPFile.read() ? 回答1 调用 SFTPFile.prefetch 应该会提高读取速度: ncfile = sftp_client.open('mynetCDFfile')

2021-12-05 07:01:22    分类:技术分享    python   ssh   sftp   paramiko   netcdf

使用 pysftp 连接到 SFTP 服务器时出现“无法加载主机密钥”警告("Failed to load HostKeys" warning while connecting to SFTP server with pysftp)

问题 我编写了一个 Python 脚本来使用密钥身份验证连接到 SFTP 服务器。 它成功连接到服务器,但显示以下警告(见下文)。 它是什么意思以及如何删除它。 必须对代码进行哪些更改? 我的代码: import os import pysftp import socket import paramiko import time import os.path import shutil IP = "127.0.X.X" myUsername = "USERNAME" port = 22 cnopts = pysftp.CnOpts() cnopts.hostkeys = None import os privatekeyfile = os.path.expanduser("C:\\Users\\Rohan\\.ssh\\cool.prv") mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile) try: with pysftp.Connection(host=IP, username=myUsername,private_key=mykey,cnopts=cnopts) as sftp: try: r=str(socket.gethostbyaddr(IP)) print("connection

2021-12-05 03:53:14    分类:技术分享    python   python-3.x   ssh   paramiko   pysftp

使用 Python 从 SFTP 服务器下载超过 5 天的文件(Download files from SFTP server that are older than 5 days using Python)

问题 我在这个站点上得到了一个 Python 脚本,它从 SFTP 服务器的目录中下载文件。 现在我需要帮助修改此代码,以便它只下载自使用代码之日起 5 天之前的文件。 下载文件的代码(基于 Linux 的 Python pysftp get_r 在 Linux 上运行良好,但在 Windows 上运行不正常): import os import pysftp from stat import S_IMODE, S_ISDIR, S_ISREG cnopts = pysftp.CnOpts() cnopts.hostkeys = None sftp=pysftp.Connection('192.168.X.X', username='username',password='password',cnopts=cnopts) def get_r_portable(sftp, remotedir, localdir, preserve_mtime=False): for entry in sftp.listdir(remotedir): remotepath = remotedir + "/" + entry localpath = os.path.join(localdir, entry) mode = sftp.stat(remotepath).st_mode if S_ISDIR

2021-12-05 03:24:11    分类:技术分享    python   sftp   paramiko   pysftp

使用 Paramiko 执行的命令不会产生任何输出(Command executed with Paramiko does not produce any output)

问题 当我尝试做 stdin, stdout, stderr = client1.exec_command('glass-version') print stdout.readlines() 我得到一个空的输出。 预期的输出是: ===================== GLASS version details ===================== GLASS version : 1.2.3 ================================================================= 回答1 如果在stdout上没有输出,通常是因为命令无法启动。 阅读stderr以检查任何错误。 print(stderr.readlines()) 错误经常是"<command> not found" 。 为此,请参阅使用 Python Paramiko exec_command 执行时,某些 Unix 命令失败并显示“<command> not found” 如果您要连接到设备,另请参阅在设备上使用 Paramiko exec_command 执行命令不起作用。

2021-12-05 03:01:58    分类:技术分享    python   ssh   stdout   paramiko

如何解决“paramiko.ssh_exception.SSHException:无法从 ssh-agent 获取密钥”(How to solve "paramiko.ssh_exception.SSHException: could not get keys from ssh-agent")

问题 我正在尝试使用 Paramiko Python 模块通过 SSH 连接到远程服务器。 在 CentOS 7 服务器上使用 Python 3.6.7 版安装。 但是出现以下错误。 python import paramiko >>> ssh = paramiko.SSHClient() >>> ssh.load_system_host_keys() >>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) >>> ssh.connect("19.16.2.2", username="user1", password="pass") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 424, in connect passphrase, File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 643, in _auth self._agent = Agent() File "/usr/local

2021-12-05 01:42:23    分类:技术分享    python   python-3.x   ssh   centos   paramiko

Paramiko:“不是有效的 RSA 私钥文件”(Paramiko: "not a valid RSA private key file")

问题 我正在尝试使用以下spinet连接到服务器 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ip = ['x.x.x.x'] key_file = "/Users/user/.ssh/id_rsa" key = paramiko.RSAKey.from_private_key_file(key_file) ssh.load_system_host_keys() ssh.connect(ips, port=22, username='XYZ', pkey=key, timeout=11) 但我收到一个错误: 不是有效的 RSA 私钥文件 回答1 我遇到了类似的情况, ssh-keygen 来帮助我。 您应该复制 id_rsa 并使用 ssh-keygen 将其转换为 RSA 类型。 将“BEGIN OPENSSH PRIVATE KEY”转换为“BEGIN RSA PRIVATE KEY” ssh-keygen -p -m PEM -f ~/.ssh/id_rsa 回答2 最新版本的 OpenSSH(7.8 和更高版本)默认以新的OpenSSH 格式生成密钥,其开头为: -----BEGIN OPENSSH PRIVATE KEY----- 自 2.7.1

2021-12-03 20:12:49    分类:技术分享    python   ssh   paramiko