サーバー クラスター内の任意の 2 つのノード間でパスワードなしの SSH ログインを実現する方法

サーバー クラスター内の任意の 2 つのノード間でパスワードなしの SSH ログインを実現する方法

サーバー クラスター内の任意の 2 つのノード間でパスワードなしのログインを実現する方法について問題が発生しました。現在、次の IP アドレスを持つ 10 個のノードで構成されたサーバー クラスターがあります。

192.168.0.1 # node1
192.168.0.2 # node2
...
192.168.0.10 # node10

これら 3 つのノード上の私のユーザー名はすべて でありxyz、これらのノード上のシステムはすべて ですUbuntu14.04

これは標準的な質問のようで、多くの場所で回答されているはずですが、Google を使用した検索では 2 つのノードに対する解決策しかわかりませんでした。たとえば、で生成された公開キーを のファイルnode1に渡して、残りのノードにパスワードなしのログインを許可します。しかし、この方法をサーバー クラスター内の任意の 2 つのノードに拡張するにはどうすればよいでしょうか。すべてのノードで公開キーを手動で生成し、各ノードの公開キーを残りのノードにコピーする必要がありますか。一般的で便利な方法はありますか。authorized_keysnode2, ..., node10node1

答え1

クラスター設定がある場合は、共有ファイル システムがある可能性があります。その場合は、SSH キーをサーバー自体に追加するだけで済みます。別のサーバーに接続すると、承認されたキーのリストに独自のキーが表示されます。その後、任意のサーバーから任意のサーバーに接続できます。

異なるファイル システムを使用している場合は、手動で行う必要があります。ユーザー用に新しい SSH キーを作成しxyzssh-copy-idそれを他の各サーバーに作成します。これはサーバーの数に応じて N² のようにスケーリングされますが、これは適切ではありません。

/home/xyz/.ssh/id_rsa1 つの SSH キーを生成し、それを からまでのすべてのマシンにコピーしますid_rsa.pub。次に、このキーをすべてのマシンに登録します。これで、同じ SSH キーを使用して、任意のサーバーから他の任意のサーバーにログインできるようになります。

これを展開するには、scpfor-loop を使用してサーバーを反復処理する簡単なスクリプトを作成します。

関連情報