2017-04-11 27 views
1

我正在使用pysftp來建立一個sftp連接的python腳本。該腳本將在Windows(Server 2012R2)中運行。我安裝的pysftp版本需要一個主機密鑰,所以我聯繫了我的供應商並從中獲得了公鑰。我無法弄清楚的是如何在我的pysftp連接中使用這個公鑰。我明白在pysftp 0.2.9有一個新的屬性(remote_server_key),但我找不到任何如何使用它的例子,我不能使用cnopts.hostkeys = none尋找一個示例來加載/使用公共ssh密鑰與pysftp

有沒有人有一個如何使用/整合sftp服務器/主機的特定公鑰?

請注意,這不是關於我的連接的私鑰/公共對(我有這些密鑰,他們工作正常) - 這是關於主機的公鑰。

+0

我正在尋找一個這方面的例子。到目前爲止沒有運氣。 –

+0

能否詳細說明一下? –

+0

是的,我發佈了下面的「答案」解決方法。希望能幫到你! –

回答

0

好吧,所以我要用解決方法「回答」這個問題。我最終做的是在paramiko/pysftp的「預期」位置創建known_hosts文件的等效物。

首先生成一個known_hosts文件。簡單參數是sftp主機的FQDN(或IP地址)以及您要連接的服務器的公鑰。

例子:

sftp.myserver.com ssh-rsa AAB3nzawerdvDLGiyasdf... 

一旦該文件創建(命名的known_hosts)使用提升的命令提示符或PowerShell會話的用戶的主目錄的根目錄創建一個.ssh目錄誰都會正在運行腳本。

cd c:\Users\serviceaccount 

md .ssh 

然後將known_hosts文件複製到該目錄中。

現在設置你的pysftp會議:

import pysftp 
cnopts = psyftp.CnOpts() 
sftpConnect = pysftp.Connection(host="sftp.myserver.com", username="myusername", private_key="c:\\path\to\my\openssh.key", private_key_pass="randompassword", port=22, cnopts=cnopts) 

爲我剛纔的工作。

+0

你從哪裏得到'private_key_pass'變量?我假設你使用的是主機提供的公共ssh密鑰。 –

+0

我用油灰密鑰生成以產生公鑰/私鑰對,並共享公共密鑰給收件人。 –