ふりぶろぐ
Web Engineer's Blog
Capistrano

Capistranoで~/.ssh/configの設定を使う!

Capistranoのconfigファイルに接続情報書きたくないなぁ…
鍵ファイルもGitHubにプッシュしたくないし。
なんとかできないかなぁ…

このような疑問にお答えします。

環境
  • ruby 2.6.0
  • Capistrano 3.10.2
  • CentOS7(Docker)

CapistranoでSSH接続するときの設定はこのように紹介されていることが多いです。

set :ssh_options, {
  user: 'user',
  keys: %w(./ssh/id_rsa),
  forward_agent: true,
  auth_methods: %w{publickey}
}

ただ、これだとこのファイルを見れば接続方法がわかってしまうし、鍵ファイルも配置しなければいけません。

このような接続情報や鍵ファイルはGitHubにプッシュしたくないですよね。

そこで、この問題を回避する方法をご紹介します。

~/.ssh/configの設定を使う!

実はCapistranoでは~/.ssh/configの設定が使えます。

~/.ssh/configの設定を使ってSSH接続できるようになればCapistranoでもSSH接続できます。

~/.ssh/configを使って普通にSSH接続してみる

~/.ssh/configに次のような設定をします。

Host sample-server
  HostName XX.XXX.XXX.XXX
  User user-name
  IdentityFile ~/.ssh/sample.pem
  • Host:任意の名前を指定してください。
  • HostName:ホスト名を指定してください。
  • User:ユーザ名を指定してください。
  • IdentityFile:鍵ファイルを指定してください。鍵ファイルのパーミッションは600。

設定後

$ ssh sample-server

このようなコマンドを実行することでSSH接続できると思います。

~/.ssh/configの設定を使うための設定をする

ここまでできたらあとは簡単です。

次のように設定して~/.ssh/configの設定からSSH接続できるようにします。

server "sample-server"

複数台設定したい場合は次のように2行設定するだけです。

server "sample-server-01"
server "sample-server-02"

あとがき

意外とこのような接続を紹介している記事は少ない気がします。

私も最初はこのコードが何をやっているのかわかりませんでした。

でも慣れてしまえばこっちのほうが楽ですね。

接続情報はサーバに設定しておくだけになるのでセキュリティリスクも低くなると思います!

ABOUT ME
りーふ
たまにブログを書いてるWebエンジニア。 サーバーサイドメインでインフラとフロントエンドもたまにやります。 Javaが得意。 Play Frameworkが好き。 本業は迷惑をかけない程度に手を抜くスタイル。 意識高い系は苦手。