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. 鍵を作成する
  • 公開鍵をLinuxに登録
  • ログイン
  • 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 」ボタンを押してログインとなります。