2017-03-10 1 views
0

저는 paramiko로 시작했고, load_system_host_keys()에 문제가 있습니다. Paramiko "Unknown Server"

내가하려고하면 :

client = SSHClient() 
client.load_system_host_keys(filename='/home/barashe/.ssh/known_hosts') 
client.connect(hostname='lvs.cs.bgu.ac.il') 
stdin, stdout, stderr = client.exec_command('ls -l') 

내가

SHException: Server 'lvs.cs.bgu.ac.il' not found in known_hosts 

얻을 그리고는 hostkeys 인스턴스처럼 보인다 비어

list(client.get_host_keys()) 
[] 

내가 대신 load_system_host_keys의 load_host_keys()을 (를 사용하는 경우) 여전히 같은 오류가 발생하지만 hostkeys 인스턴스는 이제 비어 있지 않으며 서버에 포함되어 있습니다. tr 잉 나는

client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

를 사용하여 나는이 상황을 피할 수 있다는 것을 알고,하지만 난 그것을 "올바른"방법으로 일을 선호 오히려 이상한 것 같다

list(client.get_host_keys()) 
['lvs.cs.bgu.ac.il', 
'132.72.41.50'] 

... 에 연결합니다.

내가 이해하려고 노력 중이 야입니다 : load_host_keys를 사용하는 경우

  1. 이 왜 서버가 hostkeys에 나타나더라도) (같은 오류가 무엇입니까?
  2. 이 컨텍스트에서 load_host_keys()와 load_system_host_keys()의 차이점은 무엇입니까?

건배!

답변

0

홈 디렉토리의 개인 호스트 키 파일 인 경우 load_system_host_keys 대신 load_host_keys를 사용해야합니다.

호기심에서 벗어나서 set_missing_host_key_policy를 사용하지 않았다면 특정 호스트에 대한 호스트 키는 어디에서 가져 왔습니까? .ssh 디렉토리에서 복사 한 경우 키 파일 형식이 다를 수 있습니다. 몇 가지가 있습니다.

누락 된 호스트 키 정책을 한 번 추가하고 비공개 개인 호스트 키 파일을 가리켜 테스트 할 수 있습니다. 로그인이 성공해야합니다 (인증이 성공했다고 가정). 성공 또는 실패 여부에 상관없이 사설 호스트 키 파일에는 올바른 형식의 호스트 키가 포함되어야합니다. 누락 된 호스트 키 정책 설정을 제거하고 스크립트를 다시 실행하여 작동하는지 확인할 수 있습니다. 더 이상 누락 된 호스트 키에 대해 신음을해서는 안됩니다.

이것은 나를 위해 작동 : 이해 내가 아는 내 스푸핑 /에서 known_hosts 파일을 사용 했

+0

이 도움이

from paramiko import SSHClient import paramiko client = SSHClient() client.load_host_keys(filename='/home/test/stest/kknown_hosts') # client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname='137.xx.x.x') stdin, stdout, stderr = client.exec_command('ls -l') 

희망, 하누 좋은 호출하지 않았다. 이제 제안한 방식대로 새 파일을 만들었습니다. 모두 좋았습니다! 많은 감사! – Eran