鍵交換方式によるssh接続( windowsから )
鍵交換方式でWindowsからLinuxへssh接続するやり方の説明です。
Linux側のsshサーバの設定は鍵交換方式によるssh接続-端末Bで鍵認証を受け入れる設定の確認(sshd_configの設定)で説明しています。 参考にしてください。
鍵交換方式で接続という事で、公開鍵、秘密鍵のペアが必要になります。 鍵交換方式によるssh接続でも説明しましたが、 端末Aから端末Bに「鍵」を使って接続したいなら、やる事は、端末Aで作った鍵を端末Bに登録するだけです。
で、この文章ちょっとだけ嘘があるのですが、実は鍵を作るところは端末Aじゃなくてもいいです。 ssh-keygen コマンドで鍵を作成すると公開鍵と秘密鍵と呼ばれる2つのファイル(中身はテキスト)が作成されます。 このペアが重要であって作成される場所はどこでもいいんです。 接続元(端末A)に秘密鍵があって、その秘密鍵に対応する公開鍵が接続先(端末B)に登録されていればOKです。
という事で、鍵交換方式でWindowsからLinuxへssh接続するには、 ペアの公開鍵・秘密鍵ファイルを作成する事、 Windows側に秘密鍵(テキストファイル)を持つ事、Linux側に対応する公開鍵を登録する事の3点がやる事となります。
Last Update : 2007年03月20日
鍵交換方式によるssh接続( windowsから )の手順
1. ツールの紹介
さて、Windowsから接続という事でツールが必要になります。
- 1.UTF-8 TeraTerm Pro with TTSSH2
ターミナルエミュレータです。ssh/ssh2に対応しており、UTF8にも対応。今回必要な鍵も使えます。
TeraTermを通してLinuxにアクセスします。- 2.PuTTYgen
こちらは公開鍵、秘密鍵を作成するのに必要なのですが、ssh接続可能なLinuxがあるなら無くてもいいです。
PuTTYgenの使い方覚えるよりLinuxからコマンド一発うったほうが早いと思います。
2. 鍵を作成する
鍵をWindows上に作成する方法ですが、2つ紹介します。
- 2-1 Linux上で作成し、Windowsへ転送する
- 2-2 「 1.ツールの紹介」で紹介したPuTTYgenを使う
2-1. Linux上で作成し、Windowsへ転送する
ssh-keygenというコマンドがあれば公開鍵・秘密鍵のペアが作成できます。
Linuxへログインし、以下のコマンドを使って鍵のペアを作成します。
例として、
id_rsa という名前の秘密鍵、 id_rsa.pub という名前の公開鍵を作成します。
[hoge@localhost ~]$ pwd /home/hoge [hoge@localhost ~]$ mkdir win← 鍵の置き場作成 [hoge@localhost ~]$ ssh-keygen -t rsa← 鍵作成コマンド Generating public/private rsa key pair. Enter file in which to save the key (/home/hoge/.ssh/id_rsa):/home/hoge/win/id_rsa ↑ 鍵の出力先。秘密鍵ファイルまでのフルパスを指定。 Enter passphrase (empty for no passphrase): ↑パスフレーズ入力。パスフレーズ無しでログインしたければそのままエンター。 Enter same passphrase again:もう一度パスフレーズ入力。 Your identification has been saved in /home/hoge/win/id_rsa. Your public key has been saved in /home/hoge/win/id_rsa.pub. The key fingerprint is: 8c:14:75:77:b6:63:d6:03:2a:e7:06:6a:e5:b6:db:72 hoge@localhost [kaz@kazmax ~]$ ls -l win 合計 8 -rw------- 1 hoge hoge 887 3月 21 01:02 id_rsa -rw-r--r-- 1 hoge hoge 220 3月 21 01:02 id_rsa.pub
- id_rsa:秘密鍵
- id_rsa.pub:公開鍵
これで秘密鍵と公開鍵のペアが作成されました。それぞれのファイルの中身はただのテキストファイルです。
秘密鍵はwindows端末に必要なのでFTPとかで転送するか、 catとかで中身表示させて、Windowsにテキストファイルを作成し、コピペするとかでWindows側に持ってきます。 せっかくセキュリティの為の鍵なので、セキュアじゃないFTP使うより、コピペの方がいいかもと思ったりします。
2-2.「 1.ツールの紹介」で紹介したPuTTYgenを使う
PuTTYgenのサイトよりPuTTYgenをダウンロードし、起動します。
けっこう手順があってめんどくさいです。
- 下の「Parameters」から鍵の種類を選択する。
- 「Generate」ボタンを押し、マウスをぐるぐる動かす
- 「Public key for pasting into OpenSSH authorized_keys file」に表示されている公開鍵の文字列をコピーし公開鍵ファイルを作成
- 「Save private key」ボタンを押し、秘密鍵の元ファイルを作成
- 「Load」ボタンを押し、作成した秘密鍵の元ファイルを読み込む
- メニューの「Conversions」→「Export OpenSSH key」で秘密鍵を作成
PuTTYgenを起動すると以下のような画面となります。
で、下の「Parameters」から鍵の種類を選択します。
ここでは、デフォルトの「 SSH-2 RSA 」を選択しています。
次に「Generate」ボタンを押し、マウスをぐるぐる動かします。
下の図の様にメーターが溜まっていきます。
次にメーターが溜まり終わると下の図の様になります。
この画面の一番上の「Public key for pasting into OpenSSH authorized_keys file」に表示されているものが公開鍵の文字列となります。
id_rsa.pubという名前のファイルを作成し、「Public key for pasting into OpenSSH authorized_keys file」に表示されている内容をコピーし保存します。
公開鍵を作成したら、次は秘密鍵を作成します。 「Save private key」ボタンを押し、秘密鍵の元ファイルを作成します。 ファイル名は適当でいいです。「.ppk」という拡張子がつきます。
元ファイルができたら、「Load」ボタンを押し、今作成した秘密鍵の元ファイルを読み込みます。
最後にメニューの「Conversions」→「Export OpenSSH key」で秘密鍵を作成します。
ここでは、id_rsaという名前で保存しています。
以上で公開鍵と秘密鍵が作成されました。
3. 公開鍵をLinuxに登録
次に、作成した公開鍵を、Linuxに登録します。
登録とは言ってますが、Linux上にファイルを作成して公開鍵のテキストをコピーするだけの作業です。
Linuxのログインユーザーのホームディレクトリ配下に「 .ssh 」ディレクトリを作成し、その中に「 authorized_keys 」というファイルを作成し、「 authorized_keys 」ファイルに公開鍵の中身をコピーします。
公開鍵(id_rsa.pubファイル)は単なるテキストなのでコピペでもいいし、FTPで転送して書き込みもいいし、フロッピーで移すとかでもいいです。
[hoge@localhost ~]$ cd ← ホームディレクトリにて [hoge@localhost ~]$ mkdir .ssh ※ id_rsa.pubを転送した場合 [hoge@localhost ~]$ ls -la drwx------ 2 hoge hoge 4096 3月 19 01:56 .ssh -rw-r--r-- 1 hoge hoge 963 3月 19 01:56 id_rsa.pub [hoge@localhost ~]$ cat id_rsa.pub >> .ssh/authorized_keys ※ コピペの場合 [hoge@localhost ~]$ vi .ssh/authorized_keys ↑id_rsa.pubの内容をコピー。元々このファイルがあるなら追記します。
これでログインする環境が揃ったことになります。
4. ログイン
WindowsからLinuxにログインします。
TeraTermを起動し、ホスト名を入力し、「 OK 」を押します。
以下の画面の時にユーザー名と、秘密鍵を指定します。パスフレーズがあるならパスフレーズも入力します。
「 OK 」ボタンを押してログインとなります。