SSHキー、 'expect'、 'sshpass'、またはPythonを使用せずにSSHパスワードを自動的に入力します。

SSHキー、 'expect'、 'sshpass'、またはPythonを使用せずにSSHパスワードを自動的に入力します。

PowerPC Linuxの小型仮想マシンを起動する小型デバイスがあり、Yocto Linuxの小型バージョンのスクリプトを介してSSH経由で仮想マシンにアクセスする必要があります。 PowerPC VM SSH パスワードは同じままですが、リセットされます。最大コアファイルには、再起動するたびにSSHキーの再生成が含まれます。

Yocto Linuxのインストールには「expect」コマンドはなく、「sshpass」をインストールできません。 Pythonのバージョンは非常に限られています。

シェルスクリプトのみを使用して、デフォルトの「ssh」プロンプトでパスワード要件を完了できるようにしたいです。可能ですか?

ベストアンサー1

SSH経由でログインするときにリモートでパスワードを送信するスクリプトが欲しいとしましょう。ここに追加のライブラリなどを必要としない非常に小さなPythonコードがあります。明らかに、これはos forkpty execlp read writeを使用して達成できるタスクの一例です。

#!/usr/bin/python
# simplest builtin python pseudo-tty for ssh password. meuh 
# http://unix.stackexchange.com/a/276385/119298
import os
def run(cmd,*args):
    pid, fd = os.forkpty()
    if pid==0: # child
        os.execlp(cmd,*args)
    while True:
        data = os.read(fd,1024)
        print data
        if "password:" in data:    # ssh prompt
            os.write(fd,"mypassword\n")
        elif data.endswith("$ "):  # bash prompt for input
            os.write(fd,"echo hello\n")
            os.write(fd,"echo bye\n")
            os.write(fd,"exit\n")

run("ssh", "ssh", "user@remote")

argv [0]に1回、「ssh」を2回入力する必要があります。

おすすめ記事