1. 鍵の生成
    スーパーユーザーではなく、一般ユーザーでアクセスして、以下のコマンドを実行してください。なお、sshd の方の設定、たとえば、パスワードによる接続は認めないなどの設定は終了していることにします。

ちなみに、以下は、vine 2.6r1にデフォルトで導入されている openssh-3.4p1-Ov12で実行した。何しろ、ワークステーションで vine を使い始めたからだ。他のディストロでも同じはず。

$ ssh-keygen -t dsa ←dsaというアルゴリズムを使用したキーを作成することにする。RSA とどこが異なっているかについては、恥ずかしながら不明 (注)
Generating public/private key pair.
Enter file in which to save the key  ( /home/一般ユーザー名/.ssh/id_dsa ): ←どこにキーファイルを保存するかと聞かれるので、エンターキーを押して、デフォルト(この場合は、 /home/一般ユーザー名/.ssh/)に保存するよう選択。
Enter passphrase (empty for no passphrase): ←パスワード(厳密にはパスワードではなくパスフレーズと言うようだが。)を入力。なお、入力しても表示されない。
Enter same passphrase again: ←再度パスワードの入力を求められるので、入力。入力はここまで。後は自動的に鍵ファイルが生成され保存されます。

これで秘密鍵は生成されて、使用可能の状態になりました。後は、公開鍵をサーバーに設置するだけです。

(注)RSA と DSAは暗号化するアルゴリズムの違いによるものらしい。RSAはRSAというアメリカの一会社が考えたもので、当時は特許の問題から一般的に使用できなかった。それでこの特許を侵害しないように開発されたのが DSA というアルゴリズムだという。今は、特許の問題が解消されたので、広く一般に RSA も使用できるようになっている。その結果、SSH1プロトコルに対応したRSA、SSH2 に対応したRSA2とDSA、の3種類が使用できる環境がそろっている。と理解したが、どうだろう。間違っているかもしれません。とりあえず、ここを参考にしてください。

  1. 公開鍵をサーバーに設置
    上記の作業で生成された公開鍵を、サーバーに設置しますが、それは、/home/一般ユーザー/.ssh/id_dsa.pub という名称で作成されています。これを、サーバーの/home/一般ユーザー/.ssh/authorized_keys2 という名称で保存します。従って、これを FTP 転送してもかまわないのですが、それではせっかくパスワードを暗号化しようとしている意味がなくなる。しかも、公開鍵が設置されるまでにすり替えられないように気をつけなければならないそうだ。自宅でサーバーを公開している限りでは、こんな心配は無用のような気がするが。まぁ、一般に説明されているように、フロッピーディスクを利用した設置を行った。

 

$ mount /mnt/floppy ←フロッピーディスクをマウントする。
$
cp ~/.ssh/id_dsa.pub /mnt/floppy ←フロッピーにide_dsa.pub をコピー
$
umount /mnt/floppy ←フロッピーディスクのマウントを解除

ここで、クライアントPC からフロッピーを抜き取り、サーバーのフロッピーディスドライブに挿入。今度は、サーバーPC を操作します。サーバー側でも、同様に一般ユーザーでアクセス、フロッピーディスクをマウント、id_dsa.pub をフロッピーディスクから、/home/一般ユーザー/.ssh/にauthorized_keys2の名称で保存、パーミッションの設定を行いますが、ここでは、すでにRSA2認証による公開鍵、すなわち既にauthorized_keys2 が存在しているので、これに追加する方式を選択し、複数の公開鍵の使用を可能にしました。

$ mount /mnt/floppy ←一般ユーザでアクセスし、フロッピーディスクをマウント。
$
cp /mnt/floppy/id_dsa.pub  /home/一般ユーザー/.ssh/ ←フロッピーからid_dsa.pubを/home/一般ユーザー/.sshにコピー。
$ cd /home/一般ユーザー/.ssh ← ディレクトリーを /home/一般ユーザー/.ssh に変更
$
cat id_dsa.pub >> authorized_keys2 ←既に作成してあるauthorized.keys2に追加。
$
umount /mnt/floppy ←フロッピーディスクのマウントを解除。

  1. ssh でサーバーに接続。
     ここまでできれば、もう接続できる状態です。

 

$ ssh 一般ユーザー名@ドメイン名
$
Enter passphrase for key `/home/一般ユーザー名/.ssh/id_dsa`:  ←パスワードの入力を求められるので、パスワードを入力。実際には表示されない。うまく接続できれば、前回のログインの記録を表示して接続を完了する。

-------------------------------------------------------

ssh プロトコルを利用した主なコマンド

コマンド名

機能

scp

ファイルのコピー

sftp

ファイルの転送。ftpの代替。

slogin

ログインする。

ssh

ログインするほかに、各種コマンドを実行。

ssh-agent

認証エージェント。ユーザーの秘密鍵をメモリーに保持する。パスフレーズの入力を省略するときに使用。

ssh-add

ssh-agentに秘密鍵を登録する。

ssh-keygen

秘密鍵と公開鍵を作成する。

ssh-keyscan

他のマシンの公開鍵を集める。

ex.

$ scp /home/temp/reiji.txt 一般ユーザー名/ドメイン名:コピー先ディレクトリ ←これは、/home/temp/にあるreiji.txtというファイルを、リモートPCのコピー先ディレクトリで指定した場所にコピーしないさいという、命令を実行したことになる。

Windows ユーザの Linux 入門に戻る