はじめに
こんにちは。 ビンゴ中西です。
弊社で社内用のgitの構築をしたのですが、
接続にsshを用いることにしました。
さて秘密鍵と公開鍵を作成し、公開鍵をサーバーに置くまではよかったのですが、
いざ通信しようとすると、覚えのないパスワードの入力を促されました。
さて? なぜなのでしょうか!?
【結論】デフォルトのファイル名以外を使う場合はconfigファイルを作ろうね
原因は実はすごく単純で、デフォルトの秘密鍵の名前を使っていないせいでした。
そもそもsshコマンドに関して
$ ssh -i ~/.ssh/id_rsa_hoge -l user -p 12345 192.168.1.100
のように多くのオプションを付与しなければならないケースで、
~/.ssh/config に以下のような記述をすることで、、
[~/.ssh/config]
Host hoge
Hostname 192.168.1.100
Port 12345
User user
IdentityFile ~/.ssh/id_rsa_hoge
$ ssh hoge
のように1行でsshが利用できます。
重要なのがIdentityFileで、これを指定しない場合、
デフォルトで ~/.ssh/id_rsaが利用されてしまうので、
何故か接続できない、もしくはパスワード認証になってしまうなどハマります。
git over sshの場合
この設定は、git over ssh の場合でも適用されるので、
"id_rsa"とは違うファイル名でキーを作ってしまった人は、
以下のようにIdentityFileを明示的に指定したHostの設定をconfigに追加してやればおk。
[~/.ssh/config]
Host mygit ←お好きな名前
Hostname ホスト名
User ユーザ名
IdentityFile ~/.ssh/id_rsa_git
$ git clone mygit:REPOSITORY_PATH
ちなみに、sshのキーがid_rsa のままな人はマニュアル通り以下のコマンドでおk。
$ git clone ユーザ名@ホスト名:REPOSITORY_PATH
configを追加してやると ユーザ名@ホスト名の部分がmygitだけで済むので、少し楽かも。。