パスワードを使用してSSHを介してリモートサーバーに接続するスクリプト

パスワードを使用してSSHを介してリモートサーバーに接続するスクリプト

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

ターゲットコンピュータでSSHを設定せずにリモートコンピュータに接続できるように、ホストコンピュータでSSHを設定できますか?

残りのネットワークに接続するために使用するローカルコンピュータ -SUSE Linuxエンタープライズサーバー11 SP3

ベストアンサー1

expectローカルコンピュータにインストールし、それを使用して新しいコマンドを追加する必要があるという要件を考慮してください。リモートホストonemany1ローカル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、ファンクションキーを使用してください。

おすすめ記事