2012年5月3日木曜日

さくらVPS公開鍵認証の設定でドハマリしました(汗)


前回からの続きです。
さくらVPSのセキュリティ設定で、公開鍵認証でのログインに挑戦しました。
これが3時間近くかかるというドハマりっぷりでした・・・

@ITに詳しい記事があったので、参考にさせて頂いてます。

鍵交換方式のsshでアクセスするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/429usekeyssh.html


1.PuTTYを使って公開鍵・秘密鍵の作成

PuTTYダウンロードサイト
putty-gdi-20120211.zipをダウンロード、フォルダを解凍しputtygen.exeを実行。

鍵生成の際は、「Generate」ボタンをクリック後、アプリ上でマウスをグリグリ動かしました。
鍵生成時は擬似乱数じゃなく、ちゃんと乱数で生成しているのですねー。真面目だ(当たり前?)

そうすると、こんなイメージで認証ファイルの中身ができます。
「Save public Key」をクリックすると公開鍵が、「Save Private Key」をクリックすると秘密鍵ができます。
「Save public Key」の場合、なぜか拡張子がつかないので、ファイル名の最後に「.pub」をつけます。

ファイルは適当な場所に保存します。



2.公開鍵のアップロード
1.で作成した公開鍵をサーバの/home/ユーザ/.ssh 以下にアップロードします。

私はGUI大好き人間なので、WinSCPを使用してファイルをサーバにアップロードしました。
このあたりは各人の好きな方法で何でもいいと思います。

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 件のコメント:

コメントを投稿