.ssh/configの管理が面倒すぎる
さらに、
よくあります。
とりあえず、バックアップはしておきたい。 バックアップはしたいけれども、秘密鍵は別ファイルだし、追加や更新も面倒な構造なのでなんとかしたい。
バックアップしたら簡単にリストアしたい。
ということで作ってみました。
sconb
"Ssh CONfig Buckup tool"の略です。
(ssh_config_buckup
と名付けようとしていて、ふと目を細めてみたらスコンブが見えました)
$ gem install sconb
でsconb
コマンドが使えるようになります。
使い方
例えば .ssh/configをバックアップしたいと思ったら
$ sconb dump > ssh_config.json
という感じで.ssh/configをJSONファイルでダンプできます。リストアは
$ sconb restore < ssh_config.json > ~/.ssh/config
とすれば、OK。
いわゆる .ssh/config <=> JSONの相互変換ですね。
さらに、 .ssh/configと複数ある秘密鍵とまとめて1ファイルでバックアップしたいときは--all
オプションをつけて、
$ sconb dump --all > ssh_config_with_keys.json
で、1ファイルにバックアップできます。
秘密鍵の再生成は、
$ sconb keyregen < ssh_config_with_keys.json
で、一気に秘密鍵を設置します。
当然、生成されたJSONファイルは慎重に管理する必要がありますが、これだけでも結構楽です。
JSONにするととてもうれしいこと
そう、jq
が使えます。
Hostが"github"のconfigだけ切り出してダンプ
$ sconb dump | jq '{"github"}' > github.json
もらったgithub.jsonを.ssh/configに追記
$ sconb restore < github.json >> ~/.ssh/config
2つの.ssh/configなJSONをマージ
$ jq -s '.[0] + .[1]' current.json merge.json | sconb restore > ~/.ssh/config
なかなか良いです。
とりあえずこれでぐちゃぐちゃだった.ssh/configを複数環境の設定をまとめてから整理できました。
というか
やっぱり皆さんは、.ssh/をtarで固めて管理とかしているんですかね。
もっとスタンダードな方法があったりしそう。
とりあえず自分はsconbで快適です。
オススメ
Fukuoka.rbは、PHPerでも受け入れてくれるとても良いもくもく会です。
最新Ruby事情からDockerまで、とても緩やかに情報が流れているので福岡の人はオススメです。