2017-04-11 19 views
1

나는 sftp 연결을 설정하기 위해 pysftp를 사용하여 python 스크립트를 작성하고 있습니다. 이 스크립트는 Windows (Server 2012R2)에서 실행됩니다. 내가 설치 한 pysftp 버전에는 호스트 키가 필요하므로 공급 업체에 연락하여 공개 키를 획득했습니다. 내가 알 수없는 것은 내 pysftp 연결에서이 공개 키를 사용하는 방법입니다. 나는 pysftp 0.2.9에서 새로운 속성 (remote_server_key)이 있다는 것을 알고 있지만 사용법에 대한 예제를 찾을 수 없어 사용할 수 없다. cnopts.hostkeys = nonepysftp와 공개 ssh 키를로드/사용하는 예제를 찾고

누구도 사용법을 잘 모르겠다. SFTP를 서버/호스트에 대한 특정 공개 키를 통합?

내 연결의 개인 키/공개 쌍에 관한 내용이 아닙니다 (키가 있고 잘 작동합니다) - 이는 호스트의 공개 키에 대한 것입니다.

+0

이 예제도 찾고 있습니다. 지금까지 행운이 없습니다. –

+0

당신은 전혀 정교 할 수 있습니까? –

+0

예, 아래 "답"해결 방법을 게시했습니다. 희망이 당신을 돕는다! –

답변

0

그래, 그럼 해결 방법으로 "대답"하겠습니다. 필자가 한 일은 paramiko/pysftp의 "예상 된"위치에 known_hosts 파일을 생성하는 것입니다.

먼저 known_hosts 파일을 생성합니다. 간단한 매개 변수는 sftp 호스트의 FQDN (또는 IP 주소)과 연결할 서버의 공개 키입니다. 예

:

해당 파일이 (에서 known_hosts을 명명) 만든 후에
sftp.myserver.com ssh-rsa AAB3nzawerdvDLGiyasdf... 

는 사용자의 홈 디렉토리의 루트에 SSH를 디렉토리를 만들 상승 된 명령 프롬프트 또는 PowerShell을 세션을 사용하는 사람 것 스크립트를 실행하고 있어야합니다.

cd c:\Users\serviceaccount 

md .ssh 

그런 다음 known_hosts 파일을 해당 디렉토리로 복사하십시오.

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) 

지금 나를 위해 일한 :

는 이제 pysftp 세션을 설정합니다.

+0

어디에서'private_key_pass' 변수를 가져 옵니까? 나는 당신이 호스트에 의해 제공된 공공 ssh 키를 사용하고 있다고 가정하고있다. –

+0

공개 키/개인 키 쌍을 생성하기 위해 putty keygen을 사용하고 수신자에게 공개 키를 공유했습니다. –