ネストされたサーバーにSSHを介して接続し、いくつかの情報を収集します。

ネストされたサーバーにSSHを介して接続し、いくつかの情報を収集します。

私は最近少し苦労しましたが、入れ子になったサーバーに自動的にログインして各サーバーからいくつかの情報を収集するスクリプトを作成したかったのです。 (具体的には各コンピュータから情報nvidia-smiを収集するためGPU usage info

入れ子になったサーバー構造は次のとおりです。 ( user@boss) 通常、操作を完了するにはログインを使用して特定のシステムに移動する必要がありますuser@machine1, user@machine2, user@machine3, ...が、すべてのシステムのGPU使用率を監視するのは便利ではありません。例:sshuser@bossssh

sshpass -p "xxxx" ssh -o StrictHostKeyChecking=no [email protected]
for v in machine1 machine2
do
        sshpass -p "xxxx" ssh -o StrictHostKeyChecking=no v
        echo $v
        nvidia-smi
done

ただし、user@bossにのみログインします。私はサーバー関連のコンテンツに精通していません。 User@bossがルートノードなので、machine1、machine2、...は子ノードですか?誰でも助けることができますか? (参考までに私はroot権限を持っていません)

次へ追加user@boss、user@machine1、user@machine2などのサーバーはインストールされず、サポートのみですsshpassssh

ベストアンサー1

  1. パスワード認証を使用しないでください。公開鍵認証のみを使用し、SSH鍵には安全で強力なパスワードを使用してください。

    バラよりパスワードを使用するよりもSSHキーを使用する方が安全なのはなぜですか?キーとパスワードに関する興味深いディスカッションや関連する投稿へのリンクも提供されています。

  2. 常にプロキシホストを使用してリモートホストに接続するようにSSHを設定できます。

例えば~/.ssh/config:

Host machine1 machine2 machine3
    ProxyJump user@boss

それではssh machine1そうです。いつも経由で接続してくださいboss

からman ssh_config

プロキシジャンプ

1つ以上のジャンププロキシをとして指定します[user@]host[:port]

複数のエージェントはコンマで区切ることができ、順次アクセスされます。

このオプションを設定すると、最初に指定されたホストへの(1)接続を確立し、そこから最終宛先へのTCP転送を確立して、宛先ホストへのssh(1)接続を確立します。sshProxyJump

おすすめ記事