.ssh/config からサーバ名で ssh 接続できるような alias を作成する
.ssh/config にまとまっているサーバ情報からサーバ名で ssh 接続できるエイリアスを一括作成してみた。エイリアスにするとタブ補完も効くので嬉しい(実際には github は ssh 許可していないので例)
$ cat ~/.ssh/config ############################################################ # github ############################################################ Host github HostName github.com IdentityFile /Users/kyagi/.ssh/id_rsa_github User git ############################################################ # bitbucket ############################################################ Host bitbucket HostName bitbucket.org IdentityFile /Users/kyagi/.ssh/id_rsa_bitbucket User git ############################################################ # sakura ############################################################ Host sakura HostName aaa.bbb.ccc.ddd IdentityFile /Users/kyagi/.ssh/id_rsa_sakura User kyagi
こんな感じ。bash 特有機能のプロセス置換 <() を使っているのでスクリプトにする時は shebang を #!/bin/sh でなくて #!/bin/bash にする必要がある。
$ paste <(grep ^Host config) <(grep HostName config) <(grep 'User ' config) | awk '{ printf("alias %s=\"ssh -A %s@%s\"\n", $2, $6, $4); }' alias github="ssh -A git@github.com" alias bitbucket="ssh -A git@bitbucket.org" alias sakura="ssh -A kyagi@49.212.38.52"
https://gist.github.com/3899895
プライベートレポジトリは github だと課金が必要だけど、bitbucket だと無料なので、 github はパブリク用、bitbucket はプレイベート用と使い分けるようにしている。