エックスサーバー間でパスワードなしSSH接続を設定する方法(相互接続対応)

エックスサーバーで複数の契約サーバーを利用している場合、移行作業やファイル転送を効率化するために、公開鍵認証方式によるSSHのパスワードなし接続を設定しておくと便利です。

この記事では、2つのエックスサーバー間で相互にパスワードなしSSH接続を可能にする設定手順を紹介します。


前提条件

  • 両サーバーの .ssh ディレクトリと authorized_keys ファイルはすでに存在しており、適切なパーミッションが設定されている
  • ローカルPCから両サーバーにSSH接続できる状態である
  • ポート番号はエックスサーバーのデフォルト 10022
  • 各サーバーのユーザー名・ホスト名などはダミーにしています
サーバーホスト名ユーザー名備考
サーバーAsv10001.xserver.jpuser_a移行元
サーバーBsv10002.xserver.jpuser_b移行先

[1] サーバーAからサーバーBへSSH接続できるようにする

ローカルからサーバーAに接続

ssh user_a@sv10001.xserver.jp -p 10022 -i ~/.ssh/xserver_key

サーバーAで鍵を生成

ssh-keygen -t rsa -b 4096 -C "migration.source"

そのままEnterキーを押して ~/.ssh/id_rsa に保存します。パスフレーズも空で構いません。

公開鍵サンプル(id_rsa.pub)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0...snip... user_a@sv10001.xserver.jp

※実際の鍵は非常に長く、1行で構成されます。

サーバーAの公開鍵を表示

cat ~/.ssh/id_rsa.pub

表示された公開鍵をすべてコピーします。

ローカルからサーバーBに接続

ssh user_b@sv10002.xserver.jp -p 10022 -i ~/.ssh/xserver_key

authorized_keys に公開鍵を追記(末尾に追加する)

vi ~/.ssh/authorized_keys

ファイルの末尾に、先ほどコピーした公開鍵を貼り付けて保存します。既存の内容を消さないよう注意してください。

サーバーAからサーバーBへ接続テスト

ssh user_b@sv10002.xserver.jp -p 10022 -i ~/.ssh/id_rsa

[2] サーバーBからサーバーAへSSH接続できるようにする

ローカルからサーバーBに接続

ssh user_b@sv10002.xserver.jp -p 10022 -i ~/.ssh/xserver_key

サーバーBで鍵を生成

ssh-keygen -t rsa -b 4096 -C "migration.target"

公開鍵サンプル(id_rsa.pub)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD3...snip... user_b@sv10002.xserver.jp

サーバーBの公開鍵を表示し、内容をコピー

cat ~/.ssh/id_rsa.pub

ローカルからサーバーAに接続

ssh user_a@sv10001.xserver.jp -p 10022 -i ~/.ssh/xserver_key

authorized_keys に公開鍵を追記(末尾に追加する)

vi ~/.ssh/authorized_keys

先ほどコピーした公開鍵を、既存の内容の下に追記して保存します。

サーバーBからサーバーAへ接続テスト

ssh user_a@sv10001.xserver.jp -p 10022 -i ~/.ssh/id_rsa

まとめ

接続元接続先接続コマンド
サーバーAサーバーBssh user_b@sv10002.xserver.jp -p 10022 -i ~/.ssh/id_rsa
サーバーBサーバーAssh user_a@sv10001.xserver.jp -p 10022 -i ~/.ssh/id_rsa
  • 公開鍵は authorized_keys ファイルの末尾に追加
  • .sshauthorized_keys のパーミッション設定は本記事では省略(既に正しく設定済みである前提)

この設定を行っておくことで、サーバー間での操作や自動化スクリプトの実行がスムーズになります。

コメント

タイトルとURLをコピーしました