前回からの続きです。
さくらVPSのセキュリティ設定で、公開鍵認証でのログインに挑戦しました。
これが3時間近くかかるというドハマりっぷりでした・・・
@ITに詳しい記事があったので、参考にさせて頂いてます。
鍵交換方式のsshでアクセスするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/429usekeyssh.html
1.PuTTYを使って公開鍵・秘密鍵の作成
1.PuTTYを使って公開鍵・秘密鍵の作成
PuTTYダウンロードサイト
putty-gdi-20120211.zipをダウンロード、フォルダを解凍しputtygen.exeを実行。
鍵生成の際は、「Generate」ボタンをクリック後、アプリ上でマウスをグリグリ動かしました。
鍵生成の際は、「Generate」ボタンをクリック後、アプリ上でマウスをグリグリ動かしました。
鍵生成時は擬似乱数じゃなく、ちゃんと乱数で生成しているのですねー。真面目だ(当たり前?)
そうすると、こんなイメージで認証ファイルの中身ができます。
「Save public Key」をクリックすると公開鍵が、「Save Private Key」をクリックすると秘密鍵ができます。
「Save public Key」の場合、なぜか拡張子がつかないので、ファイル名の最後に「.pub」をつけます。
ファイルは適当な場所に保存します。
2.公開鍵のアップロード
1.で作成した公開鍵をサーバの/home/ユーザ/.ssh 以下にアップロードします。
私はGUI大好き人間なので、WinSCPを使用してファイルをサーバにアップロードしました。
3.公開鍵ファイルのOpenSSH化
PuTTYで作った公開鍵はそのままでは使用できず、OpenSSHの形式にする必要があります。
サーバ上で、以下のコマンドを発行し、OpenSSHの形式にしましょう。
root権限で行なってください。
ssh-keygen -i -f 公開鍵ファイル名 > 新公開鍵ファイル名
4.公開鍵ファイル名の変更
3.で作成した、新公開鍵ファイルをコピーし、名前を「authorized_keys」に変更します。
もともとauthorized_keysが存在している場合は、catコマンドで追加します。
cat
新公開鍵ファイル名 >> $HOME/.ssh/authorized_keys
4.パーミッションの変更
rootでログインして、.sshとauthorized_keysのパーミッションを以下の通りに変更します。
.ssh → 700(rwx------)
authorized_keys → 600(rw-------)
5.動作確認
putty.exeで動作確認を行います。
putty.exeを起動すると設定画面が出てくるので、以下の設定をしてOpenします。
・Host Name
・Port(デフォルト22から変更している場合)
・Private key file for authentication →秘密鍵を指定
他にも細かい設定がありますが、とりあえず最低限これだけ設定すれば動きました。
鍵認証が成功すると、以下の様な画面が立ち上がってパスフレーズを入力するように促されます。鍵を作成した際のパスフレーズを入力すると、ログインすることができます。
6.sshd_configの編集・プロセス再起動
上記設定だけではパスワード認証が可能なので、
sshd_configを編集し、パスワード認証を不可にします。
変更箇所は以下の通り。
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
その後、プロセス再起動をかけます。
/etc/init.d/sshd restart
これでパスワード認証が拒否されるようになります。
★たったこれだけのことで、文献もたくさんあるのに、なぜドハマリしたか
1.公開鍵をOpenSSH方式にしないと動かないことを見逃していた。(1回目)
2.公開鍵をOpenSSH方式に変換後、authorized_keysをコピー作成する際にtypoした。(2回目)
ここからはクライアントからサーバまで、設定を洗いざらい見直しました。
「サーバーが鍵を拒否しました。」
の文字列は当分見たくありません・・・
公開鍵認証ができなくて困っていることをTwitterでつぶやいた時、フォロワーさんがアドバイスをたくさんくださいました。
本当にありがとうございます!
------------------------
●Twitterでいただいたアドバイス
鍵ファイルのパーミッション?
あと ~/.ssh ディレクトリのパーミッションが700になってないとか・・・?
sshの鍵認証が通らない原因か・・・ あとよくあるのが「公開鍵コピー時に改行混入」
「authorized_keys のファイル名間違い」「(OS再インストール時などの場合)クライアント側のknown_hostsに古いhostkeyが残ってる」とか?
特にコピペでauthorized_keys作るときになりがちなのが改行混入
wc -l authorized_keys とかして行数確認するよろし
あと、公開鍵認証で正常ログインできるようになったら、忘れないうちにパスワード認証を無効してsshdを再起動だな これやらないと意味がない・・・
サーバ側で必要なキーは初回起動時に自動作成されるはずだから気にしなくても大丈夫 puttygen使ってるんだったら、サーバへコピーする鍵はOpenSSH用でないとまずいですねー
ぼくも何度か鍵を拒否されましたが、きちんと鍵作り直したらいけました。
鍵を2048bitで作ってみてください
------------------------
0 件のコメント:
コメントを投稿