web-dev-qa-db-ja.com

パスワードを使用してsshでリモートサーバーに接続するためのスクリプト

1つのリモートマシンから1つのネットワーク内の多数のリモートマシンに接続しています。すべてのリモートマシンのユーザー名とパスワードは同じです。ユーザー名とパスを使用してマシンにログインするスクリプトを作成したいと思います。ホストマシンにツールをインストールできません(expectまたはsshpass)。同じマシンに複数回接続することはめったにないので、公開鍵をターゲットのリモートマシンにコピーしても意味がありません。毎日-新しいマシン。

ターゲットマシンに何かを設定しなくてもリモートマシンに接続できるように、ホストマシンにsshを設定することは可能ですか?

ネットワークの残りの部分に接続するために使用しているローカルマシン-SUSE Linux Enterprise Server 11 SP

1
Vitalii Plagov

要件を考慮して、ローカルマシンにexpectをインストールし、それを使用して新しいコマンドを実際に追加します。リモートホストをonemany1many2、ローカルマシンをmyboxと呼びましょう。このようなもの(未テスト)

#!/usr/bin/expect
# connect to "one"
spawn ssh username@one
# next lines shouldn't be needed, should have shared keys for "one"
expect "assword: "
# provide password for "one", ending with "\r"
send -- "the_password_for_username@one\r"
# mainloop
interact "~p" {
    send "ssh manyuser@[lindex $argv 0]\r"
    expect "yes/no)? " { send "yes\r" exp_continue } "assword: "
    send "the_password_for_many\r"
    }

これをmybox./script many1として実行すると、oneに接続されます

次に、many1に接続する場合は、~pと入力します。 sshコマンドを実行し、「接続しますか」という質問に答え、パスワードを入力します。

もちろん、スクリプトにパスワードを保存することの安全性に関する標準的なコメントが適用されます。もう1つのわずかな欠点は、これにキーシーケンスを割り当てる必要があることです。ここでは~pを使用していますが、ファンクションキーを使用することもできます。

0
icarus