サーバー クラスター内の任意の 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_keys
node2, ..., node10
node1
答え1
クラスター設定がある場合は、共有ファイル システムがある可能性があります。その場合は、SSH キーをサーバー自体に追加するだけで済みます。別のサーバーに接続すると、承認されたキーのリストに独自のキーが表示されます。その後、任意のサーバーから任意のサーバーに接続できます。
異なるファイル システムを使用している場合は、手動で行う必要があります。ユーザー用に新しい SSH キーを作成しxyz
、ssh-copy-id
それを他の各サーバーに作成します。これはサーバーの数に応じて N² のようにスケーリングされますが、これは適切ではありません。
/home/xyz/.ssh/id_rsa
1 つの SSH キーを生成し、それを からまでのすべてのマシンにコピーしますid_rsa.pub
。次に、このキーをすべてのマシンに登録します。これで、同じ SSH キーを使用して、任意のサーバーから他の任意のサーバーにログインできるようになります。
これを展開するには、scp
とfor
-loop を使用してサーバーを反復処理する簡単なスクリプトを作成します。