あるリモートコンピュータからネットワーク内の複数のリモートコンピュータに接続しています。ユーザー名とパスワードは、すべてのリモートコンピュータで同じです。私のユーザー名とパスを使用してコンピュータにログインするスクリプトを作成したいと思います。ホストにツール(expectまたはsshpass)をインストールできません。同じシステムに複数回接続することはほとんどないため、公開鍵をターゲットリモートシステムにコピーする必要はありません。毎日新しいマシンがあります。
ターゲットコンピュータでSSHを設定せずにリモートコンピュータに接続できるように、ホストコンピュータでSSHを設定できますか?
残りのネットワークに接続するために使用するローカルコンピュータ -SUSE Linuxエンタープライズサーバー11 SP3
ベストアンサー1
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
その後、接続するにはsshコマンドを実行して「接続しますか?」という質問に答え、パスワードを入力するだけですmany1
。~p
もちろん、スクリプトにパスワードを保存するのは安全ではないという標準的な説明も適用されます。もう一つの小さな欠点は、このためにキーシーケンスを指定する必要があることです。私はここを使用していますが~p
、ファンクションキーを使用してください。