2016-06-22 11 views
0

パスワードを必要としないpythonスクリプトを使用して、SSH -vvv hostコマンドを使用して、一連のIPアドレスの認証方法(公開鍵かパスワードか、またはその両方)を確認したいと考えています。Pythonスクリプトを使ってssh -vvvホストを実行するには?

基本的に私は、結果の下の行に興味を持っています:ここで

debug1: Authentications that can continue: publickey,password 

は、それがパスワードを要求するので、私が試してみましたが、それは動作しませんものです。

process = subprocess.Popen("ssh -vvv host", shell=True, 
    stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
output,stderr = process.communicate() 
status = process.poll() 
print output 

誰でも手助けできますか?

答えて

1

あなたは、キーボード対話型またはパスワード認証を試していないクライアントに指示し

ssh -o KbdInteractiveAuthentication=no -o PasswordAuthentication=no -vvv 

を使用しようとすることができますが、サーバーは、まだ送信されますそれがサポートするメソッド。ホストが不明な場合は、確認を求めることがあります(-o StrictHostKeyChecking=noで無効にすることができます)。他の認証方法を無効にしたい場合もあります。listed in the manual

編集:ssh -o PreferredAuthentications=none

+0

ありがとう。これは1行だけを返しますが、私のpythonスクリプトはまだ実行されています。この行が返ってから停止する方法を知っていますか? – UserYmY

+0

通信呼び出しの後にsshプロセスが終了しているか、通信呼び出しが戻っていませんか?いずれにしても、 'stdin = PIPE'を設定して通信呼び出しで閉じられるようにするべきでしょう。 – mata

0
import paramiko 
client = SSHClient() 
client.load_system_host_keys() 
try: 
    client.connect('ssh.example.com') 
except AuthenticationException as e: 
    print ('got exception {}'.format(e.__dict__)) 
except : 
    print ('got exception: NOT AUTH !!!') 

ここで何度もループします。サブプロセスなどparamikoの必要は素晴らしいではありません.......

+0

おかげで動作するはずです。私は特にSSHを望んでいる - vvv – UserYmY

関連する問題