え!! SSH接続で、設定した覚えのないパスワードを聞かれるんですけど!?

はじめに

こんにちは。 ビンゴ中西です。

弊社で社内用の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だけで済むので、少し楽かも。。