PuTTYを使ってWin環境からLinuxへSSH接続する

2004/07/01

以前はTTSSHを使っておりましたが、PuTTYでSSH2が使えるようなので乗り換えました。その時のメモです。


PuTTYのインストール

  1. PuTTY: a free telnet/ssh clientからDownloadの中にある、putty-0.54-installer.exeをダウンロードします。
  2. ダウンロードしたファイルをダブル・クリックしてインストールします。
  3. hdk の自作ソフトの紹介から「PuTTY で ISO 2022 による日本語入力・表示を可能にするパッチ/puttyjp.exe」をダウンロードします。ダウンロードしたputtykjbin.zipを、さきほどPuTTYをインストールしたフォルダ(初期値ではC:\Program Files\PuTTY)へ解凍します。
  4. これは必須ではありませんが、上記で保存したフォルダにPATHの設定をしておいたほうが便利かと思います。

鍵生成

  1. puttygen.exeを実行します。
  2. Parametersの「SSH2 RSA」「SSH2 DSA」のどちらかを選択します。
  3. 「Generate」ボタンをクリックします。
  4. ウィンドウ上でランダムにマウスを動かしてください。キーが生成されます。
  5. 「Key commenct」にはホスト名にするなど、わかりやすい名前にしておきます。
  6. 「Key passphrase」にパスフレーズを入力します(パスフレーズとはパスワードのようなものですが、より長い文字列を指定できます)。同じく「Con firm passphrase」に同じパスフレーズを入力します。
  7. 「Save public key」ボタンをクリックして公開鍵を保存します。
  8. 「Save private key」ボタンをクリックして秘密鍵を保存します。
  9. OpenSSH形式の公開鍵が「Public key for pasting into OpenSSH authorized_key file」のボックスに表示されているものをコピーし、エディタへ貼り付けします。そして、これを「RSAならid_rsa.pub」「DSAならid_dsa.pub」という名前で保存します。この時、行の最後で改行しないようにしてください。

これで鍵生成は完了です。PuTTY Key Generatorのウィンドウを閉じてください。


公開鍵の転送

これは、できるならpscpで転送したほうがいいと思いますが、サーバ側の設定によってはできないこともありますのでその場合はftpで転送してください。scpで転送する場合は次のようにします。

なお、pscpへのPATHが設定されていない場合、pscpはフルパスで指定してください。

  1. WindowsのDosプロンプト(コマンド・プロンプト)を起動します。
  2. ファイル転送します。以下の「USERNAME」「SERVER」はご自身の環境に合わせてください。鍵生成の時にDSAを指定したときはid_dsa.pubを転送します。
    > pscp id_rsa.pub USERNAME@SERVER:id_rsa.pub
  3. Linuxパスワードを聞かれるので入力するとファイルが転送されます。

サーバ側へ公開鍵を登録

  1. telnetなどでサーバ側コンソールを起動しログインします。
  2. .sshディレクトリの存在を確認します。
    $ ls .ssh
  3. .sshディレクトリがない場合、次のようにして.sshディレクトリを作ります。
    $ mkdir ~/.ssh
    $ chmod 700 ~/.ssh
  4. 公開鍵を登録します。
    $ cd ~/.ssh
    $ cat ../id_rsa.pub >> authorized_keys
    $ echo >> authorized_keys
    $ chmod 600 authorized_keys
  5. 転送しておいたid_rsa.pubを削除します。
    $ rm ../id_rsa.pub

puttyjp.exeの設定

  1. puttyjp.exeを起動してください。次のウィンドウが表示されます。
  2. 接続先のホスト名を入力し、「SSH」を選択します。
  3. 「接続」の「自動ログインのユーザー名」を指定します。
  4. 優先するSSHプロトコルバージョンで「2 only」を選択します。
  5. 「接続/SSH/認証」のプライベートキーファイルを指定します。先ほど作った秘密鍵を指定すればOKです。
  6. 「セッション」の「保存されたセッション」に適当な名前を入力して「保存」ボタンをクリックします。

これで設定完了です。一度、PuTTY設定の画面を閉じましょう。

あとはputtyjp.exeを起動し直して、さきほど保存したセッションが「保存されたセッション」に表示されていると思います。

これをダブル・クリックします。すると、サーバへSSH接続されますので、パスフレーズを入力します。


pageant.exeでログインを楽にしよう

上記までの方法で普通にSSHできますが、pageant.exeを使うともっと簡単にログインできるようになります。

作成しておいたxxxx.ppk(xxxxは任意)をダブルクリックしてください。すると、pageantが起動してパスフレーズを聞かれた後、常駐します。

後はPuTTYで接続を試みると、パスフレーズを聞いてこなくなります。つまり、最初の1回だけ、パスフレーズを入力すると、2度と入力しなくても何度でもログインできます。

私はWindowsのスタートアップに登録してあるので、Windows起動時にpageantが起動するようにしてあり、すべてのサーバはパスワード無しでログインできるようにしています。


scpについて

pscpを使うと暗号化されてファイル転送できますが、コマンドラインでしか使えません。

そこで、お勧めはWinSCPです。WinSCPは、ほぼffftpなどど同様の使い勝手で暗号化してファイル転送できます。

WinSCPのインストールは次のようにします。

  1. WinSCP - Freeware SFTP and SCP client for WindowsからDownloadをクリックして「WinSCP 3.6.1 multilanguage installation package」をダウンロードします(これよりも最新版があれば、最新版をダウンロードしてください)。
  2. ダウンロードしたファイルをダブル・クリックしてインストールします。

使い方はffftpなどと同じなのでわかると思います。

multilanguage版は最初から日本語対応ですから、ftpを使ったことがある人なら、誰でもわかると思います。

なお、WinSCPはPuTTYと連携を取って実行されるようです。ですから、パスワードを登録しなければ秘密鍵の登録ができますし、pageant.exeが実行されていれば、パスフレーズ入力の必要もありません。たいへん便利です。


トンネル

SSHには「トンネル」という機能がありますので、たとえばMySQLとの接続を暗号化することもできます。

今回は例として、クライアントPCからODBC経由でMySQLサーバへ接続するとき、SSHポートフォワーディングを利用して暗号化通信してみます。

  1. 今回はクライアントのローカル・ポート4000番を利用してみます。PuTTYを起動します。
  2. トンネル設定の「源ポート」に4000、送り先に「サーバ:3306」、「ローカル」を選択して追加ボタンをクリックします。
  3. この設定をした後、サーバにSSHで接続します。

 

これでクライアントはlocalhostの4000番ポートへMySQLクライアントで接続すると、MySQLサーバの3306ポートへ暗号化して転送されます。MyODBCなどでも暗号化通信が行えます。

Copyright©2001-2017 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org