kazmax - Linux で自宅サーバー

鍵交換方式による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. ツールの紹介
  2. 鍵を作成する
  3. 公開鍵をLinuxに登録
  4. ログイン

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をダウンロードし、起動します。
けっこう手順があってめんどくさいです。

  1. 下の「Parameters」から鍵の種類を選択する。
  2. 「Generate」ボタンを押し、マウスをぐるぐる動かす
  3. 「Public key for pasting into OpenSSH authorized_keys file」に表示されている公開鍵の文字列をコピーし公開鍵ファイルを作成
  4. 「Save private key」ボタンを押し、秘密鍵の元ファイルを作成
  5. 「Load」ボタンを押し、作成した秘密鍵の元ファイルを読み込む
  6. メニューの「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 」ボタンを押してログインとなります。