Mac で ssh config を設定した後、 「Too many authentication failures for xxxx」エラーへの対応をして、さらに鍵使用時に毎回パスフレーズを訊かれないようにする。
一人でいろんな設定のサーバーと同時に戦う時のメモ。
1. ssh の設定を config で便利に管理
Mac / Linux で ssh 接続をする際、~/.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
の記述を追加すれば良い。
3. IdentitiesOnly を設定した際に、毎回パスフレーズを聴かれない様にする
上記のオプションを打つのが面倒なので、 config の設定を行うと、
パスフレーズ設定をしている ssh 鍵が、Macのキーチェーンを参照しなくなり、
毎回キーチェーンが起動するようになる。
※ 「パスワードをキーチェーンに保存」にチェックを入れても、効かない。
キーチェーンを使わないで済む様に、鍵ファイルにパスフレーズを書き込む
$ openssl rsa -in org.key -out new.key # < パスフレーズの入力
( これは Apache で SSL の自動起動設定をする時に使うヤツ )
( 当然、鍵のパーミッションは400で )
ここまで設定すると、キー登録しているホストへは一発で接続でき、普通にユーザー名とパスワードでログインしたいサーバーへは
$ ssh user@192.168.1.100 user@192.168.1.100s password:
と普通にログインできるようになる。
めでたし。