エックスサーバーで複数の契約サーバーを利用している場合、移行作業やファイル転送を効率化するために、公開鍵認証方式によるSSHのパスワードなし接続を設定しておくと便利です。
この記事では、2つのエックスサーバー間で相互にパスワードなしSSH接続を可能にする設定手順を紹介します。
前提条件
- 両サーバーの
.ssh
ディレクトリとauthorized_keys
ファイルはすでに存在しており、適切なパーミッションが設定されている - ローカルPCから両サーバーにSSH接続できる状態である
- ポート番号はエックスサーバーのデフォルト
10022
- 各サーバーのユーザー名・ホスト名などはダミーにしています
サーバー | ホスト名 | ユーザー名 | 備考 |
---|---|---|---|
サーバーA | sv10001.xserver.jp | user_a | 移行元 |
サーバーB | sv10002.xserver.jp | user_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 | サーバーB | ssh user_b@sv10002.xserver.jp -p 10022 -i ~/.ssh/id_rsa |
サーバーB | サーバーA | ssh user_a@sv10001.xserver.jp -p 10022 -i ~/.ssh/id_rsa |
- 公開鍵は
authorized_keys
ファイルの末尾に追加 .ssh
やauthorized_keys
のパーミッション設定は本記事では省略(既に正しく設定済みである前提)
この設定を行っておくことで、サーバー間での操作や自動化スクリプトの実行がスムーズになります。
コメント