使用PuTTY,终端程序将其保存到注册表[hkey_current_user\software\simontatham\PuTTY\sshhostkeys]
。
如何协调pysftp和Putty之间的差异?
我的代码是:
import pysftp as sftp
def push_file_to_server():
s = sftp.Connection(host='138.99.99.129', username='root', password='*********')
local_path = "testme.txt"
remote_path = "/home/testme.txt"
s.put(local_path, remote_path)
s.close()
push_file_to_server()
不要设置cnopts.hostkeys=none
(如第二个得到支持的答案所示),除非您不关心安全性。这样做就会失去对中间人攻击的保护。
使用cnopts.hostkeys
(返回hostkeys
)管理受信任的主机密钥。
cnopts = pysftp.CnOpts(knownhosts='known_hosts')
with pysftp.Connection(host, username, password, cnopts=cnopts) as sftp:
其中known_hosts
包含服务器公钥],其格式如下:
example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...
如果不想使用外部文件,还可以使用
from base64 import decodebytes
# ...
keydata = b"""AAAAB3NzaC1yc2EAAAADAQAB..."""
key = paramiko.RSAKey(data=decodebytes(keydata))
cnopts = pysftp.CnOpts()
cnopts.hostkeys.add('example.com', 'ssh-rsa', key)
with pysftp.Connection(host, username, password, cnopts=cnopts) as sftp:
尽管从pysftp 0.2.9开始,这种方法将发出一个警告,看起来像是一个bug:
在使用pysftp连接到SFTP服务器时“未能加载主机键”警告
使用OpenSSHssh-keyscan
检索所需格式的主机密钥的一个简单方法是:
$ ssh-keyscan example.com
# example.com SSH-2.0-OpenSSH_5.3
example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...
(由于pysftp中的一个bug,如果服务器使用非标准端口,这就不起作用了-条目以[example.com]:port
+小心将ssh-keyscan
重定向到PowerShell中的文件)
您还可以使应用程序自动执行相同的操作:
使用带有PysFTP的Paramiko AutoAddPolicy
(它会自动将新主机的主机密钥添加到known_hosts
中,但对于已知的主机密钥,它不会接受更改的密钥)
虽然为了绝对安全,您不应该远程检索主机密钥,因为您无法确定,如果您没有受到攻击。
请参阅我的文章“我在哪里获取SSH主机密钥指纹以授权服务器?”
这是为我的WinSCP SFTP客户端提供的,但其中的大多数信息一般都是有效的。
如果只需要使用其指纹验证主机密钥,请参阅python-pysftp/paramiko-verify host key using its frington。
问题内容: 我正在使用pysftp编写程序,它想针对验证SSH主机密钥。 终端程序使用PuTTY将其保存到Registry中。 如何调和pysftp和PuTTY之间的区别? 我的代码是: E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py:61: UserWarning: Failed to load HostK
此代码引发异常。如何验证SSH指纹而不将其存储在文件中?我相信下面的代码是为公钥设计的。但带有SFTP服务器的客户端验证了指纹,但没有为我获取公钥。 代码基于使用PysFTP验证主机密钥。
问题内容: 我的 詹金斯(Jenkins) 有问题,设置为“ git”,显示以下错误: 我已经用 ssh 测试过: 这是错误的: 我还使用“ SSH密钥”完成了这些步骤。 在詹金斯下登录 将您的github密钥复制到Jenkins .ssh文件夹 重命名键 但仍然无法在 jenkins中使用* git 仓库。 * 感谢帮助!。 问题答案: 更改为用户并手动运行命令: 首次通过SSH连接到新主机时,
我对jenkins有一个问题,设置“Git”,显示以下错误: 我已经用ssh进行了测试: 这是错误: 谢谢你的帮助!。
我正在尝试提交到我的存储库,但当我单击“发布分支”时,出现了一个错误,请帮助我,伙计们,我需要办公室工作的帮助,我是新来的。 点击这里查看图片
问题内容: 我具有对生产服务器的超级用户访问权限,我想在git中将最新版本部署到服务器,但是当我在要更新的文件夹上“ git pull”时遇到以下错误。 我浏览了一下,但是找不到明确的答案。 登台服务器在同一台计算机上运行,但是只是在不同的文件夹中,当我在该文件夹中时,一切正常。 我对Linux不太有经验,所以请提供有关如何修复的明确答案:-) 否则我可以使用任何我需要的东西 ps这在过去一直