Capistranoでポート番号が異なるサーバーにデプロイする方法
January 04, 2014
前提
-
Capistranoのssh_optionsのport設定は使用せず、基本的には22番ポートの接続を前提とします。
-
Capistranoのroleには22番ポートのサーバー、それ以外のポートのサーバーもまとめて記述。
1. ~/.ssh/configに22番ポート以外の接続先別のポート番号指定を記述する
Host xxx.xxx.xxx.xxx HostName xxx.xxx.xxx.xxx Port 10022
2. リモート先の~/.ssh/configにGitHubへの接続ポートを指定する
実際のエラーをメモし忘れましたが、1番の対応のままデプロイをすると「GitHubに10022ポートで接続できないよ」というエラーが発生しデプロイに失敗します。それを正す為に下記でGitHubへの接続を22番ポートに強制します。
Host github.com HostName github.com Port 22 User git
これで複数台のサーバーの一部のポート番号が異なる場合でもCapistranoでデプロイ可能となります。 が、そもそもこのような例外対応をしなくてはいけない状況自体が問題なので、sshの接続ポートをまずは揃えた方が良いと思います。