【ssh】鍵認証ができない

ssh-key-scurity1苦労話

自宅検証を行う上でWindowsPCをあれこれカスタマイズしようとしたお話です
OpenSSH for Windowsのインストール手順はこちらです

Windows for OPENSSHインストール
Windows環境でsshを使うにはフリーソフトをインストールする必要があります。今回はその一つでもあるOPENSSHの説明をします。主にWindowsをsshサーバにする役割を持っています。リモートでsshでWindowsにログインできるようになります。

【現象】

windowsクライアントをSSHサーバにするべく
OpenSSH for Windowsをインストールする
(cygwinが別の用途で既に入っている。)

ただ、鍵認証を行ったときのみsshでアクセスできない

【環境】

Windows Vista HOME Premium
OPENSSH for Windows 7.1p1

【切り分け】

1.OpenSSHインストール完了

2.ssh.conf を修正し、sshdを再起動する

3.ローカル・別PCからTeratermを使い、パスワード認証ありのsshアクセスする
→ログインできた

4.鍵認証をするべく、その設定を行う
クライアント側(TeraTerm)で作成
-鍵の種類:RSA
-ビット数:2048
鍵のパスフレーズ:パスワードあり、なし 両方作成

5.公開鍵の内容を「authorized_keys」ファイルにコピーする

6.ローカル、別PCからTeratermにて鍵認証でsshアクセスする
→ログインできない

Teraterm エラーメッセージ

“認証に失敗しました。再試行してください”

7.ファイルのパーミッション、所有者を変更する
パターン1
> chmod 755 $HOME/.ssh
> chmod 644 $HOME/.ssh /authorized_keys

→事象変わらず、ログインできない

パターン2
> chmod 700 $HOME/.ssh
> chmod 600 $HOME/.ssh/authorized_keys

→事象変わらず、ログインできない

8.公開鍵の内容を「authorized_keys」ファイルにリダイレクトする
(”5”は手動でコピーしたので、今回はリダイレクトにする)
> cat id_rsa_pub > authorized_keys
→事象変わらず、ログインできない

9.sshアクセスを行った時の詳細ログを確認する
cygwin上より、ssh -vvv -i 秘密鍵ファイル名 アカウント名@localhost
※オプション”v”の数だけ詳細なログを吐き出す

> ssh -vvv ~省略~
(一部抜粋)
moduli does not exist, using fixed modulus

> /var/log/messages
→出力されない

10.cygwinの中にある “moduli”ファイル を”C:\Program Files\OpenSSH-Win32″にコピー
→エラーメッセージが変わったが、結局ログインできない
> tail -f sshd.log
11.OpenSSHを再インストール
setup-ssh-lsa.cmd でエラーを起こしていた
(管理者権限のPowerShell、コマンドプロンプトで実行しても同様にエラーを起こす)

(一部抜粋)
C:\Windows\system32copy C:\Program Files\OpenSSH-Win32\x86\ssh-lsa.dll
C:\Windows\system32\
指定されたファイルが見つかりません。

12.バッチでのコピーがうまくいかないようなので、手動で “ssh-lsa.dll” を
“C:\Windows\system32\にコピー
→事象変わらず、ログインできない

13.再度、Teratermでのアクセスを試みる
→やはり、ログインできないが、あることに気づく
→ログイン時に”秘密鍵ファイルを選択する”ときに以下の設定になっているが
いままで作成した秘密鍵がデフォルトで出てこない

Teraterm 秘密鍵ファイルの選択 ダイアログ
-ファイル名:identity
-フィルタ:秘密鍵ファイル
表示されるファイル
id_rsa

表示されないファイル
id_rsa2
id_rsa3
id_rsa4
id_rsa5
※フィルタを”すべてのファイル(*.*)”にすれば出てくるが・・・

14.ファイル名を変更してsshアクセス
修正前
id_rsa2
id_rsa3
id_rsa4
id_rsa5

修正後
id2_rsa
id3_rsa
id4_rsa
id5_rsa

→無事、ログインできた

【結論】
ハマると大変・・・
以下は、sshでうまくアクセスできない時に重点的に確認する部分
・host key、moduli、設定ファイル などのファイルの配置場所
・.ssh、authorized_keys のパーミッションと所有者
・ssh.confの内容
・authorized_keys へはリダイレクトで公開鍵を追加する
・秘密鍵(id_rsa)のファイル名

また、サーバの筐体やNICを変更したり、ssh.confを変更した後に
sshアクセスしたとき(クライアント→サーバ)以下のメッセージがでて
ログインできない

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

この場合は、クライアント側にknown_hostsができるので
(cygwinだったり、Teratermだったり、そのアプリでアクセスしたら、その配下に生成される)
そのファイルを削除すれば、再度アクセスできる

タイトルとURLをコピーしました