はじめに
いままで繋がっていたサーバにsshする際に急にこんなエラーが出ることがあります。
Received disconnect from xxx.xxx.xxx.xxx: 2: Too many authentication failures for ユーザ名
直前に設定を変更した、とか思い当たるふしがないのに急に出るので一瞬戸惑います。
なので、備忘録もかねたこれの対処方法メモ。
おしな
- 原因
- 対処法 - 一時的に繋ぎたい
- 対処法 - 設定として対処したい
1. 原因
原因は~/.ssh/config
の設定によるものらしいです。
設定によるといっても誤った設定をしたこが原因じゃないというのがやっかいなところ。
では、どういう時に起きるかと言うと、
configに書いてないサーバなどに普通にパスワードで入ろうとした場合などで
サーバーに接続できなかった際に~/.ssh/config
で設定されてる接続を上から試すため、
失敗の上限にひっかかっておきたりするらしいです。
なので~/.ssh/config
にいろんなサーバの接続先の設定が増えていった際におこるのだ、ということらしいです。
2. 対処法 - 一時的に繋ぎたい
自分の場合、config設定にないサーバにちょっと繋ごうとして起こったので
そんなときはこれだけでも良いかもしれないです。
sshコマンドに-o
オプションをつけてパスワードを強制することで回避します。
$ ssh -A ユーザ名@接続先 -o PreferredAuthentications=password
3. 対処法 - 設定として対処したい
設定として~/.ssh/config
に書いてしまいます。
configの最後にこんな感じで追記します。
$ vi ~/.ssh/config ---- vi追記 ---- Host xxx.xxx.xxx.xxx HostName xxx.xxx.xxx.xxx PreferredAuthentications password ---------------
補足
気をつけたいのはこのエラーに関するサイトには
PreferredAuthentications passwordと追記
のように書いてあるので
素直にその1行のみ追加したり他に影響がある書き方をすると
他サーバへの設定にも影響して他サーバに入れなくなるので、
ipでもhostnameでも上記のように対象のサーバだけの設定にしたほうが良いですね。
参考
こちらが参考になりました!thx!
* http://d.hatena.ne.jp/kou_i/20101121/1290352589
おわり
急に起こると焦るけどそんなときに思い出せる自分メモになればなーと。