4

私はPythonでこのような関数を持っています:

def test_ssh(host, username, password):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host, username=username, password=password)

問題は: test_ssh('127.0.0.1', 'root', 'hello')動作します

しかし、test_ssh('localhost', 'root', 'hello')動作しません

私が得るエラーは次のとおりです:

ssh: Could not resolve hostname localhost: Name or service not known

これは何が原因ですか?ありがとう

4

3 に答える 3

0

与えてみてくださいssh.connect(hostname=host, username=username, password=password)

于 2012-12-18T12:29:32.147 に答える
0

私のコメントはあまり意味がありませんでしたので(すべてまとめて)(OSがLinuxであると仮定して)-

エラーの理由 -

ssh: ホスト名を解決できませんでした localhost: 名前またはサービスが不明です

である - HOSTNAME の DNS 解決が適切な IP を提供していない (コメント #1)

このコマンドでテストします (端末)-

ホストの ローカルホスト

お手並みをみせてもらおう -

/etc/hostsファイルを編集 し、このファイルに IP とホスト名を入力します。これにより、ホスト名とIPが次のように解決されるはずです-

#IP ホスト名 [[エイリアス 1] [...]]
127.0.0.1 localhost
172.22.0.9 mymachine.home mymachine

最後に素晴らしいリンク - http://bit.ly/IHhA1R

編集

可能なワークフロー -

  • ユーザー登録、HOSTNAMEの入力
  • コマンドを実行します (python では os.subprocess または os.popen を使用できます) -

bash$ dig HOSTNAME

  • HOSTNAME の IP を取得する
  • HOSTNAME の代わりに IP を使用して HOST への接続を試行します

常に同じワークフローを使用して、ユーザーから提供された HOSTNAME の最新の IP を取得し、HOSTNAME の代わりに IP を使用して接続します

于 2012-12-18T12:40:59.713 に答える