Mac で ssh config を設定した後、 「Too many authentication failures for xxxx」エラーへの対応をして、さらに鍵使用時に毎回パスフレーズを訊かれないようにする。

一人でいろんな設定のサーバーと同時に戦う時のメモ。

1. ssh の設定を config で便利に管理

Mac / Linuxssh 接続をする際、~/.ssh/config ファイルの設定をすると、毎回接続するサーバーの設定のを打ち込む手間が省けます。

$ vi ~/.ssh/config

Host server1
  HostName 192.168.0.100 
  Port          22
  User         myuser
  IdentityFile ~/.ssh/id_rsa
# ログイン
$ ssh server1

ログイン用のシェルを書いてパスを通すか、aliasにでも書いたら? と思ったが、 rsync/scp/git 等のコマンドでも同じ設定が使えるので、こっちの方が俄然便利。

# scp も行ける。
$ scp server1:~/src.file dst

詳細はこちら
http://www.unixuser.org/~euske/doc/openssh/jman/ssh_config.html

踏み台とかもマニアックに設定できる。

2. config を使わないサーバーへ接続する際にエラーが出る際の対処

configの設定が多くなってくると、今度は普通にパスワードで入りたい時に

# 普通にログイン
$ ssh user@192.168.1.100
Received disconnect from 192.168.1.100: 2: Too many authentication failures for user

のエラーが頻発するようになる。

これは、サーバーに接続できなかった際に、config で設定されてるで接続を試すため、
失敗の上限に引っかかって起きるエラー。


これを避けるために ssh のオプションでパスワードを強制する。

$ ssh user@192.168.1.100 -o PreferredAuthentications=password

もしくは、~/.ssh/config に別の設定を試さないように指定

# 別のホストの設定を試さない
IdentitiesOnly yes 

の記述を追加すれば良い。

詳細はこちらのブログ
http://d.hatena.ne.jp/kou_i/20101121/1290352589

3. IdentitiesOnly を設定した際に、毎回パスフレーズを聴かれない様にする

上記のオプションを打つのが面倒なので、 config の設定を行うと、
パスフレーズ設定をしている ssh 鍵が、Macのキーチェーンを参照しなくなり、
毎回キーチェーンが起動するようになる。

※ 「パスワードをキーチェーンに保存」にチェックを入れても、効かない。

キーチェーンを使わないで済む様に、鍵ファイルにパスフレーズを書き込む

$ openssl rsa -in org.key -out new.key
# < パスフレーズの入力

( これは ApacheSSL自動起動設定をする時に使うヤツ )
( 当然、鍵のパーミッションは400で )

ここまで設定すると、キー登録しているホストへは一発で接続でき、普通にユーザー名とパスワードでログインしたいサーバーへは

$ ssh user@192.168.1.100
user@192.168.1.100s password: 


と普通にログインできるようになる。


めでたし。