2016-04-14 12 views
1

こんにちは、私はNXclient(UNix/KDE)を使用しています。私は別のサーバーにsshセッションを作成し、いくつかの自動化タスクを実行しようとしているpythonスクリプトを実行しています。基本的に私は変数にパスワードを保存しています.SSHセッションがパスワードを要求すると、単に保存されたパスワードを送信します。それは非常によくパテを使用して動作します。sshセッション中にパスワード用のオープンsshダイアログを無効にする

問題: 上記のnxclientを使用すると、 SSHセッションがパスワードを必要とするたびに、「ターミナルがフリーズしてスクリプトが失敗するパスワードを尋ねるGUIプロンプトが表示されます。パスワードはすでに使用されている変数に格納されているので、私はGUIにパスワードを入力したくありません。

次のスクリーンショットが添付されています。どうすればこの問題を解決できますか? click for screen shot

[EDIT] if password_prompt: child.sendline(getpass.getpass('Enter your windows password: ')) else : child.sendline(ssh_password) i = child.expect([os.path.basename(keyfile), pexpect.TIMEOUT])

+0

より安全な[public/private key authentication](https://help.ubuntu.com/community/SSH/OpenSSH/Keys)に切り替えることができます – jDo

答えて

0

さて、あなたはいくつかのオプションがあることを行うコードの セクション:

  1. は、現在お使いのキーは確認ダイアログをもたらす-cオプションでssh-agentaddedです特定のキーが使用されるたびにyesと入力するように求められます。そのセッションの起動スクリプトから-cオプションを削除するか、デフォルトのOpenSSH Ssh-Agentからssh-agentをセッションのキーなどを保存するより派手な(おそらく安全性の低い)ものに変更することができます
  2. ssh-agentの使用を完全に無効にし、端末からのパスフレーズをunset SSH_AUTH_SOCK環境変数で指定します。パスフレーズをSTDOUTから読み取ることができないように、入力を処理するためにTTYを使用する必要があります(チェックpexpect
  3. パスフレーズのないキーに切り替えます。ロボット専用のキーの場合、パスフレーズをプレーンテキストで保存しようとしているため、これは大きな安全保護違反のようには見えません。しかしおそらくそれは設定する方が良いでしょう
+0

あなたはどういう意味ですか? 「あなたの鍵はssh-agentに-cオプションで追加されました。セッション起動スクリプトはどこにありますか? –

+0

これは、現在使用しているディストリビューションによって異なります。私の場合、起動時に '/ etc/profile.d /'にあるスクリプトからキーを追加します。 – user3159253

+0

'-c'オプションを指定しないでキーを再追加するだけで、' ssh-add'で不必要な確認を避けることができます – user3159253

0

実際には、DISPLAYという別の環境変数があります。 DISPLAYとSSH_ASKPASSの両方を解除すると、この問題を解決するのに役立ちました

関連する問題