スクリプトを使用してssh接続を自動的に入力しようとしています。この以前のSOFの投稿は、これまでのところ私を助けてくれました。1つの接続を使用すると機能します(最初のssh
ステートメント)。ただし、接続したら別のssh接続を作成したいので、次のようになります。
#! /bin/bash
# My ssh script
sshpass -p "MY_PASSWORD1" ssh -o StrictHostKeyChecking=no *my_hostname_1*
sshpass -p "MY_PASSWORD2" ssh -o StrictHostKeyChecking=no *my_hostname_2*
スクリプトを実行すると、に接続されるだけで、最初の接続を終了するまでmy_hostname_1
2番目のssh
コマンドは実行されませんssh
。
私は次のif
ようなステートメントを使用してみました:
if [ "$HOSTNAME" = my_host_name_1 ]; then
sshpass -p "MY_PASSWORD2" ssh -o StrictHostKeyChecking=no *my_hostname_2*
fi
しかし、最初の接続を終了するまで、コマンドを読み取ることができません。
@lihaoによって提案されたProxyCommandの例を次に示します。
#!/bin/bash
sshpass -p "MY_PASSWORD2" ssh -o StrictHostKeyChecking=no \
-o ProxyCommand='sshpass -p "MY_PASSWORD1" ssh m_hostname_1 netcat -w 1 %h %p' \
my_hostname_2
最初のホストを介してプロキシし、2番目のホストに到達します。これは、にnetcat
インストールされていることを前提としていますmy_hostname_2
。そうでない場合は、インストールする必要があります。
これを~/.ssh/config
ファイルに設定して、コマンドラインでプロキシを使用する必要がないようにすることもできます。
Host my_hostname_1
HostName my_hostname_1
Host my_hostname_2
HostName my_hostname_2
ProxyCommand ssh my_hostname_1 netcat -w 1 %h %p
ただし、これはパスワードの処理に関して少し注意が必要です。sshpass
ここに置くこともできますが、パスワードをプレーンテキストにするのは良い考えではありません。キーベースの認証を使用する方が良い場合があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加