この記事は「さくらのVPS導入解説 その6」の続きです。
前回で秘密鍵と公開鍵、および公開鍵を置くためのディレクトリが作成できました。今回は実際に公開鍵をサーバー上に送信し、認証方法をパスワードから公開鍵認証に切り替えます。
具体的にどうやって送るかですが、今回はFTPクライアントを使って送ります。
まずはFTPクライアントがSSH接続に対応している必要があります。有名どころでSSH接続できるクライアントとしては、WinSCPとFileZillaがあります。(正確にはSCPクライアントやSFTPクライアントですが)
今回はやはり初心者にとっつきが良いと思うFileZillaを使います。
ダウンロードとインストールについては「FFFTPからの乗り換えにおすすめのFTPクライアント「FileZilla」の導入と設定」の記事を参考にしてください。
- FileZillaメニューバーの「ファイル」→「サイトマネージャ」をクリックします。
- 「新しいサイト」ボタンをクリックします。
- 「ホスト」にVPSのIPアドレスを入力します。
- 「ポート」にはSSHの初期ポートである「22」を入力します。
- 「Protocol」のリストボタンから「SFTP」を選択します。
- 「ログオンの種類」は「通常」を選びます。
- 「ユーザー」に作成しておいた通常ユーザー名を入力します。
- 「パスワード」に通常ユーザーのパスワードを入力します。
- 「OK」をクリックするとVPSが追加されます。
- 「接続」をクリックして接続したあと、以下のように「.ssh」ディレクトリがあることを確認します。
- 「.ssh」ディレクトリを開き、先ほど作成・保存しておいた「authorized_keys」をアップロードします。
これで公開鍵がサーバー上に置けました。
さらにauthorized_keys.pubはパーミッションを600(自分だけ読み書きできる)にしておきます。
Poderosaから行っても良いですが、FileZillaを開いているので、そのまま右クリック→「ファイルパーミッション」で600に設定してもOKです。
以上で公開鍵の配置が完了しました。
公開鍵は置けましたが、さくらのVPSの初期設定ではパスワード認証のみが有効になっており、公開鍵認証は有効になっていません。そこで「sshd_config」というファイルを編集し、公開鍵認証を有効にします。
- Poderosaで通常ユーザーでVPSにログインします。
- sshd_configはroot権限でないと編集できないので、ここで一時的にroot権限を扱える「sudo」コマンドを使います。下記のように入力してください。
$ sudo vi /etc/ssh/sshd_config
- sshd_configは実際には上記のようにフルパスで「/etc/ssh/sshd_config」と入力しないと動かないので注意してください。
- またsudoのあとの「vi」は、Linux/Unix系に標準で入っているVi(Vim)というエディタを起動するためのものです。
- なおLinuxやUnixではサーバー設定に関するファイルはetcディレクトリ以下に置くなどの大まかな決まりがあります。(ディストリビューションごとに細かい違いはありますが)。そのため今回編集するsshd_configも、etc内に置かれています。
- 「password for username:」とパスワード入力を求められるので、入力(または貼り付け)します。
- Poderosaでの貼り付けは、メニューバー「編集」→「貼り付け」です。
- 上手くコマンドが動けば、sudoの設定ファイルを編集したときと同じようにviエディタを使っての編集画面になります。初期設定では鍵認証に関する以下の三行が「#」でコメントアウトされていますが、これらを有効にします。
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
- (viの操作に詳しくない場合は)カーソルキーで該当の箇所まで移動して、それぞれの「#」の上でxキーで削除できます。
- 「#」を削除して有効にできたら、いったん上書き保存&終了します。sudoの設定ファイルのときと同じく「:wq」と入力してEnterキーを押します。
:wq
- さらにsshd_configはSSHデーモン(サービス)を再起動しないと変更が有効にならないので、その操作を行います。これもroot権限が必要なので、sudoを使い、sshd(SSHデーモン)のフルパスを指定して再起動させます。
$ sudo /etc/rc.d/init.d/sshd restart
- 「Stopping sshd:」および「Starting sshd:」が「OK」と出れば再起動完了です。
これで鍵認証が有効になりました。
なお、パスワード認証がまだ有効になっていますが、この時点でパスワード認証を同時に不可にしてしまうと、万が一鍵認証が通らなかった場合に、サーバーにアクセスできなくなります。なので、まだパスワード認証も許可しておきます。
まず公開鍵認証でのログインが可能になっているかを確認します。
- いったんPodrosaのコンソールを閉じます。
- 再び新規telnet/SSH接続を開きます。
- 「認証方法」をパスワードから「公開鍵」に変更し、「パスフレーズ」も鍵作成時に入力したパスフレーズに変更します。
- さらに「鍵ファイル」は参照ボタンから、保存しておいた秘密鍵を選びます。
- 「OK」で接続します。
接続に成功すれば、これで公開鍵認証はOKです。
セキュアな公開鍵認証が可能になったので、これまでのパスワード認証は無効にしておきます。
さらに、あわせてここでrootでのログインも禁止しておきます。
- 「sshd_config」を開きます。
$ sudo vi /etc/ssh/sshd_config
- #PermitRootLogin yesとなっている行を探します。
- xキーで「#」を削除します。
- yesのsに合わせた状態でaキーを押して挿入モードに切り替え、「yes」を「no」に書き換えます。
- Escキーを押して挿入モードから抜けます。
- つづけてPasswordAuthentication noとなっている行を探します。
- yesのsに合わせた状態でaキーを押して挿入モードに切り替え、「yes」を「no」に書き換えます。
- 「:wq」と入力して、上書き保存と終了を同時に行います。
これでパスワード認証およびrootログインが無効になりました。以降は通常ユーザーでの公開鍵認証によるログインのみを利用することになります。
次回はサーバーのシステムを最新状態にアップデートします。