PuTTYを使ってWin環境からLinuxへSSH接続する |
2004/07/01 |
以前はTTSSHを使っておりましたが、PuTTYでSSH2が使えるようなので乗り換えました。その時のメモです。
PuTTYのインストール
-
PuTTY: a free telnet/ssh clientからDownloadの中にある、putty-0.54-installer.exeをダウンロードします。
- ダウンロードしたファイルをダブル・クリックしてインストールします。
- hdk の自作ソフトの紹介から「PuTTY で ISO 2022 による日本語入力・表示を可能にするパッチ/puttyjp.exe」をダウンロードします。ダウンロードしたputtykjbin.zipを、さきほどPuTTYをインストールしたフォルダ(初期値ではC:\Program Files\PuTTY)へ解凍します。
- これは必須ではありませんが、上記で保存したフォルダにPATHの設定をしておいたほうが便利かと思います。
鍵生成
- puttygen.exeを実行します。
- Parametersの「SSH2 RSA」「SSH2 DSA」のどちらかを選択します。
- 「Generate」ボタンをクリックします。
- ウィンドウ上でランダムにマウスを動かしてください。キーが生成されます。
- 「Key commenct」にはホスト名にするなど、わかりやすい名前にしておきます。
- 「Key passphrase」にパスフレーズを入力します(パスフレーズとはパスワードのようなものですが、より長い文字列を指定できます)。同じく「Con firm passphrase」に同じパスフレーズを入力します。
- 「Save public key」ボタンをクリックして公開鍵を保存します。
- 「Save private key」ボタンをクリックして秘密鍵を保存します。
- 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はフルパスで指定してください。
- WindowsのDosプロンプト(コマンド・プロンプト)を起動します。
ファイル転送します。以下の「USERNAME」「SERVER」はご自身の環境に合わせてください。鍵生成の時にDSAを指定したときはid_dsa.pubを転送します。
> pscp id_rsa.pub USERNAME@SERVER:id_rsa.pub
- Linuxパスワードを聞かれるので入力するとファイルが転送されます。
サーバ側へ公開鍵を登録
- telnetなどでサーバ側コンソールを起動しログインします。
.sshディレクトリの存在を確認します。
$ ls .ssh
.sshディレクトリがない場合、次のようにして.sshディレクトリを作ります。
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
公開鍵を登録します。
$ cd ~/.ssh
$ cat ../id_rsa.pub >> authorized_keys
$ echo >> authorized_keys
$ chmod 600 authorized_keys
転送しておいたid_rsa.pubを削除します。
$ rm ../id_rsa.pub
puttyjp.exeの設定
puttyjp.exeを起動してください。次のウィンドウが表示されます。
接続先のホスト名を入力し、「SSH」を選択します。
「接続」の「自動ログインのユーザー名」を指定します。
優先するSSHプロトコルバージョンで「2 only」を選択します。
「接続/SSH/認証」のプライベートキーファイルを指定します。先ほど作った秘密鍵を指定すればOKです。
「セッション」の「保存されたセッション」に適当な名前を入力して「保存」ボタンをクリックします。
これで設定完了です。一度、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のインストールは次のようにします。
- WinSCP - Freeware SFTP and SCP client for WindowsからDownloadをクリックして「WinSCP 3.6.1 multilanguage installation package」をダウンロードします(これよりも最新版があれば、最新版をダウンロードしてください)。
- ダウンロードしたファイルをダブル・クリックしてインストールします。
使い方はffftpなどと同じなのでわかると思います。
multilanguage版は最初から日本語対応ですから、ftpを使ったことがある人なら、誰でもわかると思います。
なお、WinSCPはPuTTYと連携を取って実行されるようです。ですから、パスワードを登録しなければ秘密鍵の登録ができますし、pageant.exeが実行されていれば、パスフレーズ入力の必要もありません。たいへん便利です。
トンネル
SSHには「トンネル」という機能がありますので、たとえばMySQLとの接続を暗号化することもできます。
今回は例として、クライアントPCからODBC経由でMySQLサーバへ接続するとき、SSHポートフォワーディングを利用して暗号化通信してみます。
- 今回はクライアントのローカル・ポート4000番を利用してみます。PuTTYを起動します。
トンネル設定の「源ポート」に4000、送り先に「サーバ:3306」、「ローカル」を選択して追加ボタンをクリックします。
- この設定をした後、サーバにSSHで接続します。
これでクライアントはlocalhostの4000番ポートへMySQLクライアントで接続すると、MySQLサーバの3306ポートへ暗号化して転送されます。MyODBCなどでも暗号化通信が行えます。
|