RSA-Key認証でSSHを使う

はじめにご注意

はじめにお断りしておきますが、私はSSHおよびRSA-Keyのセキュリティーの強さ について詳細な知識を持ち合わせているわけではありません。以下の文章では、 認証の際にパスワードを入力する必要のない、RSA公開鍵暗号による認証の具体 的な方法を説明しますが、この方法を推奨するものではありません。一説にはパ スワード入力による認証に比べクラックされやすいそうです。このページの終り にも「再びご注意」の項がありますので、そこもきちんとお 読みください。

なお、執筆時点で筆者が確認している情報ではVersion 1.2.26以前のSSHではすでにセキュリティーホールが見つかっています。 早急にVersion 1.2.27以降に入れ替えてください。

実際の方法

さて、ここで目的としていることは単にパスワードのかわりに公開鍵でSSHの認 証を済ませてしまおう、ということですので、方法はいたって単純です。まず鍵 を生成するためにssh-keygenコマンドが使える環境が必要です。Unix環境で SSHをインストールしていればssh, slogin, scpなどのコマンドと同時にインス トールされていますが、Windows環境でTeraTerm Pro+TTSSHで純粋な SSHクライアントのみを実現している場合にはssh-keygenがないかと思います。 その場合には接続先のホストにインストールされているssh-keygenを使ってくだ さい。

家から大学のコンピュータにログインしたい、という典型的な場合であれば大学 のコンピュータには間違いなくssh-keygenが準備されています。大学に足を運ん で大学内からログインしましょう。ssh-keygenを手元のコンピュータではなく遠 隔地のコンピュータで実行する場合には、秘密鍵を手元のコンピュータに「安全 な方法」でもってこなくてはなりませんので、遠隔ログインで実行したのではい ろいろと問題が生じます。遠隔ログインで鍵を生成して、ftpで秘密鍵を転送す る、などというのはもっての他です。こんな危険窮まり無い方法を思いついた方 は、この時点でこのページを読むのをやめた方が身のためです。

いずれにせよ、コマンドラインからssh-keygenを実行すれば鍵が生成できます。 鍵の長さを聞かれた場合には最長の1024ビットにしておくのが問題ないでしょう。 成功するとホームディレクトリ下の.sshディレクトリ(つまり~/.ssh/)に identityとidentity.pubが生成されます。前者が秘密鍵、後者が公開鍵です。あ とは、「ログイン先のマシンに公開鍵があり、手元のマシンに秘密鍵がある」、 という状況にすればいいわけですね。

あとは普通にSSHでログインするだけです。

ssh -l <ログイン先ユーザ名> <ログイン先ホスト名>

でしたね。もうパスワードの入力を求められることはありません。コマンドライ ンのSSHクライアントの場合には~/.sshに秘密鍵があればデフォルトでRSAー Keyによる認証を優先して試みます。TeraTerm+TTSSHの場合は認証方法を尋ねる ウインドウが出ますので、そこでRSA-Key認証を選び、秘密鍵のあるフォルダを 指定してやります。TeraTermの.iniファイルを書き換えればデフォルトで RSA-Key認証にすることもできます。

再びご注意

以上で説明はおわりです。めでたしめでたし、と。しかしこの方法を実行した場 合、手元の秘密鍵の管理には細心の注意を払う必要があります。手元のマシンに ログインできた時点で、誰でも接続先のアカウントが使用できるようにしてしまっ たのですから。ホームディレクトリをうっかり他人と共有しまうことのないよう、 気をつけてください。手元のマシンはそのマシン自体のみならず、接続先のアカ ウントに対してもセキュリティーの最後の砦になったことをお忘れなく。「愛機 は断固死守すべし!」です。手元のマシンがWindowsで、パスワード入力なしでロ グインできる状況の場合には絶対にそのマシンを他人に触れさせないことが必要 です。できれば手元のWindowsマシンにもパスワードを設定することをお奨めし ます。

冒頭でも述べた通り、毎回パスワードを入力する方が安全という説もたしかにあ ります。しかしショルダーハック(文字通り肩越しにパスワードの入力を覗き見 ること/最強のハック方法です(^_^;;))の危険がないとはいえない場合もありま すし、たくさんのパスワードを覚えきれないからといって、付箋紙にパスワード を書いて手元のマシンに張り付けておくようなことをするより、よっぽど安全で す。ケースバイケースといったところでしょう。結局セキュリティーというのは 使う人の意識次第だと思います。どんなに強固なセキュリティーシステムでも、 使う人の意識に空いたセキュリティーホールまでは埋めることができませんから ね。

なお、SSHには単にログインするのみならず、ポートフォワーディングを使って メールの送受信やFTPなど他のサービスをセキュアーにする便利な機能もありま すが、その説明はまた別の機会に譲りたいと思います。

このページに関する質問、ご意見は下記Webmasterまでお願いします。


Webmaster@tatsuto.com
Last modified: Mon May 22 20:24:47 JST 2000