1つのリモートマシンから1つのネットワーク内の多数のリモートマシンに接続しています。すべてのリモートマシンのユーザー名とパスワードは同じです。ユーザー名とパスを使用してマシンにログインするスクリプトを作成したいと思います。ホストマシンにツールをインストールできません(expectまたはsshpass)。同じマシンに複数回接続することはめったにないので、公開鍵をターゲットのリモートマシンにコピーしても意味がありません。毎日-新しいマシン。
ターゲットマシンに何かを設定しなくてもリモートマシンに接続できるように、ホストマシンにsshを設定することは可能ですか?
ネットワークの残りの部分に接続するために使用しているローカルマシン-SUSE Linux Enterprise Server 11 SP
要件を考慮して、ローカルマシンにexpect
をインストールし、それを使用して新しいコマンドを実際に追加します。リモートホストをone
とmany1
、many2
、ローカルマシンを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
を使用していますが、ファンクションキーを使用することもできます。