自分サーバの構築その15:teraterm+ssh2で公開鍵認証ログイン
Linuxサーバ間で、公開鍵認証+ノンパスワードでのsshログインをする環境は整った。
今度は、WindowsからCentOSサーバにsshログインする際に、公開鍵認証でログインできるように環境を整えてみたい。さらにはノンパスワードでsshログインできるところまでやってみようと思う。
普段Windows上で使用しているターミナルソフトは、定番の「UTF-8 TeraTerm Pro with TTSSH2」である。
SourceForge上のプロジェクトサイトから最新版がダウンロードが可能だ。
SourceForge.jp: Project Info - UTF-8 TeraTerm Pro with TTSSH2
ちなみに、このバージョンのteratermは、ウィンドウを半透明にする事が出来るので、お気に入り。
今回、参考にしたサイトは以下のサイト。
- teraterm(ssh2対応) 公開鍵認証 - Charly's notepad
- ITmedia エンタープライズ : Linux Tips「TeraTermでパスワードログインを制限しRSAログインのみを許可させる」
まずはWindows側でteratermの「SSHキー生成」機能を使用して、RSA鍵のペアを作成する。
鍵ペアの生成は、ローカル、リモートのどちらで生成しても良い、との事であるが、リモート側で鍵のペアを生成すると、秘密鍵をローカル側に転送して来なくていけない。せっかく「秘密」な鍵であるので、心情的にもセキュリティ的にもローカルで鍵のペアを生成して、公開鍵をリモート側に転送する、というやり方の方が良さそうな感じがする。
ではまず、ローカル(Windows)側での操作。
- teratermを起動し、「新規接続」ダイアログをキャンセルする。
- 「設定」メニューから、「SSHキー生成」を選択する。
- 「キーの種類」を選ぶ。今回は「RSA」を使用する。
- 「生成」ボタンを押して、鍵のパスフレーズを2回入力する。
- 「公開鍵の保存」「秘密鍵の保存」ボタンを押して、公開鍵/秘密鍵をローカルのディスク上に保存する。
ここまで完了したら、生成された公開鍵(デフォルトのファイル名は"id_rsa.pub")を、scpなどでリモート側に転送する。
ここからは、リモートサーバであるCentOS上での操作。まずはユーザ側。
- Windowsで生成されたローカルの公開鍵を、CentOS上の対象ユーザのauthorized_keysに追記する。ちなみに、ローカルから転送された公開鍵ファイルは、ユーザのホームディレクトリに置いた、という前提で。
- authorized_keysファイルのパーミッションを「600」に変更する。
- 転送された公開鍵ファイルを削除する。
[hanzawa@remote ~]$ pwd
/home/hanzawa
[hanzawa@remote ~]$ cat id_rsa.pub >> ~/.ssh/authorized_keys
[hanzawa@remote ~]$ chmod 600 ~/.ssh/authorized_keys
[hanzawa@remote ~]$ rm id_rsa.pub
次は、rootにsuしての作業。sshd_configの設定を変更する。変更後はデーモンを再起動。
[root@remote]# vi /etc/ssh/sshd_config
(略)
RSAAuthentication yes
PasswordAuthentication no
(略)
[root@remote]# service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
「RSAAuthentication」でRSA鍵を有効にする、「PasswordAuthentication」でパスワードでのログインを禁止する、の2点。
これで、リモートサーバ側の設定は完了。再びWindows上のteratermの設定に戻る。
- teratermを起動し、新規接続画面で「TCP/IPホスト」に接続先アドレスを入力して「OK」
- 「RSA/DSA鍵を使う」を選択して、秘密鍵ファイルをファイル選択ダイアログで指定する。
- ユーザ名と、秘密鍵のパスフレーズを入力する。ユーザのリモート先のアカウントパスワードではなく、秘密鍵のパスフレーズ。
- 「OK」ボタンを押すと、無事ログイン出来る。
公開鍵認証を使用して、teratermからsshログインする事が出来た。
しかし、このままだと、毎回毎回RSA鍵ファイルを指定して、さらにパスフレーズを入力しなければいけなくなるので、パスワード認証のときよりも、かなり手間が増えてしまった。
これを解決するには、teratermの「TeraTermMenu」というアプリケーションを使用すれば、鍵ファイルを設定しておいて、ワンクリックでリモート側にログインする事が出来る。もちろん、パスフレーズの入力なしで。
続きを書こうと思ったけども、お腹が減ったので中断。続きは明日書く。
------------------------------------------------------------
2007/6/21 追記
昨日の続きで、teratermmenuの設定も書いておく。
こちらのサイトに詳しい記述がある。
UTF8対応版のteratermには、teraterm menuというタスクトレイに常駐するアプリが同梱されており、デフォルトのインストールではスタートメニューに登録される。起動していない場合は、インストールディレクトリにあるttpmenu.exeを起動する。
私の場合は、インストールディレクトリ「C:\Program Files\teraterm」以下に「ttpmenu.exe」があった。
このアプリケーションを起動すると、タスクトレイにアイコンが出現するので、右クリック⇒「リスト編集」でホスト名などを登録する画面が出てくる。
- 「登録名」には任意の名前を入力
- 「自動ログイン」を選択し、「ホスト名」にはリモートサーバのアドレスを入力する。
- 同じく、「ユーザ名」には、リモートサーバのユーザ名を入力する。
- 「パスワード」には、ユーザのパスワードではなく、次に登録する「秘密鍵」のパスフレーズを入力する。
- 下の「ttsshを使う」にチェックを入れ、「キー」の隣のボタンをクリックして、RSA鍵ペアの秘密鍵ファイルの場所を指定する。
- 最後に、画面真ん中あたりの左向きの矢印ボタンをクリックすると、画面左の「リスト項目」に設定内容が登録される。
ここまで出来たら画面を閉じる。
後は、タスクトレイのアイコンを左クリックすると、先ほど編集したリモートサーバの名前が出てくるので、それを選択する。teratermの画面が開き、パスワードを入力する事なく、リモートサーバへログインする事が出来る。
毎回、ttpmenu.exeを起動するのが面倒臭いので、Windowsのスタートアップに登録しておけば、より便利。
これで非常に快適な生活が送れる(!?)ようになりました。めでたしめでたし。