[Mac]シロク流、sshの設定ファイル分割管理

0. 前提

環境

  • Mac OSX
  • Ruby(gemが使える)

sshの設定ファイルを複数に分けたい

  • 通常、sshの接続先の設定は~/.ssh/configという名のファイルに記述される。
  • 接続ホスト数が増えるほど、~/.ssh/configの中身は混乱をきたす。
  • 複数人で共通のssh接続先を共有する場合、~/.ssh/configの中身を「部分的に」共有したい場合がある。
  • そんな時、ssh設定ファイルが複数に分けられたら、便利ですよね!

というわけで、弊社片岡氏が作成したコマンドsshxの導入手順と使い方を本ブログでは紹介します。

1. 導入手順

1-1. インストール

gem install sshx

1-2. プレーンsshからの移行処理

sshx hostname

ここまでやると、~/.sshxというディレクトリが生成され、中身は

$ ls ~/.sshx/
config      ssh_config

となっている。
~/.sshx/ssh_configの中身は、sshxインストール前の~/.ssh/configの中身と全く同じになっている。
代わりに、~/.ssh/configの中身は、~/.sshx/配下の設定ファイルにより自動生成される。
(つまり、sshxインストール後は~/.ssh/configを直接いじることは2度とない。いじりたければ~/.sshx/ssh_configをいじればよい)

1-3. ~/.sshx/configの中身

下記のようにすれば良い。

NamespaceSeparator -
EnableAlias true
SshPath /usr/bin/ssh
  • NamespaceSeparator:ネームスペースの区切り文字
  • EnableAlias:sshに対してsshxのエイリアスを貼るかどうか
  • SshPath:プレーンsshへのパス

1-4. 複数ファイルを設定ファイルとして置く

~/.sshx/配下に設定ファイルを置くことで、これらを~/.ssh/configに自動的に反映させることが出来る。

シロクでは各プロジェクトごとにsshのconfigファイルを共通で管理しており、その置き先にシンボリックリンクを貼ることで、~/.sshx/配下に設定ファイルを擬似的に置いている。

ln -s /path/to/sshx_config ~/.sshx/hoge_config

(注1) 間違えてシンボリックリンクを貼ってしまった場合

unlink ~/.sshx/hoge_config

とすればシンボリックリンクを消せる。

(注2) hoge_configの中身例

NameSpace hoge-prd

Host web
  HostName xxxxx.xxxxx.com
  User ec2-user
  Port 22
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/hoge.pem

Host batch
  HostName yyyyy.yyyyy.com
  User ec2-user
  Port 22
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/hoge.pem

NameSpace hoge-stg

Host web
  HostName zzzzz.zzzzz.com
  User ec2-user
  Port 22
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/hoge.pem

Host batch
  HostName wwwww.wwwww.com
  User ec2-user
  Port 22
  StrictHostKeyChecking no
  IdentityFile ~/.ssh/hoge.pem

1-5. sourceコマンドで上記を反映 & pemを置く

source ~/.bashrc

をすれば、上記が反映される。
あとは、hoge.pemをチームメンバーから受け取り、~/.ssh/配下に置けば、めでたく

ssh hoge-prd-web
ssh hoge-stg-batch

などといったコマンドでサーバにアクセスできるようになる。

【参考URL】
▼設定ファイル分割や、コマンド補完が使える拡張sshコマンドを公開しました。
http://blog.katty.in/4936

シェアする

  • このエントリーをはてなブックマークに追加

フォローする