ここでのクライアントとは、メインのインターネットサーバーとなります。SSH サーバーに対する認証方法はいくつかありますが、ここではDSA(RSA)による認証鍵を使用した認証を行います。つまり、有効な鍵がなければ、セッションが確立できない認証方式です。
流れとしては、サーバー管理者から証明書を発行する HTTPSのクライアント認証や、Zebedee とは違い、クライアント(ユーザー)側から公開鍵を提出し、サーバー管理者がそれを受理することで本人確認を行います。
先に説明したとおり、鍵にはプロトコル1 プロトコル2 があります。基本的に互いに互換はありません。鍵を作成する場合は、接続先がどのプロトコルなのか知っておく必要があります。ここでは、プロトコル2 に限定しています。
接続を行なうユーザーになり、ユーザーのホームディレクトリで以下を実行します。
鍵の保存場所を指定。そのまま Enter した場合、デフォルトではホームディレクトリ ~/.sshとなります。ssh-keygen の詳細は man で確認してください。
証明書のパスフレーズを入力します。クライアント認証の最にこのパスワードが要求されます。そのまま Enter した場合は、鍵の認証だけでそのままSSHサービスが開始されます。Apache SSLと同じです。
ファイル名の指定を行なわなかった場合は、以下のファイルが生成されます。
~/.ssh/id_dsa (dsa秘密鍵)
~/.ssh/id_dsa.pub (dsa公開鍵)
この公開鍵 id_dsa.pub をサーバー側へ安全な方法で提出します。 この時、暗号化保護されていないネットワークを使って提出するのは やめて下さい。また、root ユーザーで接続するような危険な行為は 決して行なってはいけません。パスフレーズも与えないとなると自殺行為に等しいです。( SSHでは rootユーザーによる接続は行なえないようになっていたと思います。)
SSHサーバーとなるユーザーのホームディレクトリに以下のファイルを設置します。
(デフォルトpath)
~/.ssh/authorized_keys
authorized_keys ファイルに、SSH 接続を行なうクライアントから渡された公開鍵の内容を記述する事で公開鍵認証が可能になります。
このLinuxユーザー以外が読めてはいけません。ユーザーのみ読み込み/書き込みを許可します。
他のユーザーにもこのサーバーのこのユーザーアカウントの使用をみとめる場合は、同様に、RSA又はRSS プロトコル2 バージョンのOpen SSH 公開鍵を提出してもらい
を実行し、authorized_keys へ追記します。これでクライアント認証が実現します。
今回は、Linux 同士の接続ですが、基本的にこれだけでリモートログインが可能になります。Windows にも SSH Open SSH クライアントがあります。これらのツールを使って、鍵の作成、SSH2 接続を行なうことも出来ます。linux windows であっても設定に違いはありません。