PuTTYは、SSHプロトコルを利用可能なリモートサーバ接続用クライントソフトです。Simon Tatham氏を中心とするイギリスのケンブリッジに拠点を置く小さなチームによって維持開発が行われています。ここではSimon Tatham氏のPuTTYをベースに日本語表示などのパッチが適用されているPuTTYrvを使用しています。
PuTTY
公式サイトPuTTY: a free SSH and Telnet client
Simon Tatham氏のPuTTYとは別に、いくつかの派生版が存在します。
PuTTYjp
公式版にISO 2022対応の非公式パッチを適用したものです。
Hideki EIRAKUさんが配布されたもので、ずっと利用させてもらっていましたが2020年9月26日にバイナリーの配布が終了しました。
日本語表記、iniファイル対応など必要なものだけが適用されていて気に入っていただけに残念です。
最終バージョンはPuTTY-0.72をもとに配布されているものです。
それ以降のセキュリティ対策が適用されていませんので継続利用している方は注意が必要です。
PuTTYの開発版をもとに PuTTY 0.60 ごった煮版 2007年8月6日版のほか諸々の機能を追加しているものです。
開発版がもとになっていることからも安定よりも機能追加を優先されているようです。
公式版をもとにPuTTY 0.60 ごった煮版 2007年8月6日版のほか、主に操作性を改善するパッチが適用されています。
公式版のPuTTYのメニューとPuTTYrvのメニューを見比べれば違いが分かりやすいと思います。
ベースにしている公式版にいち早く追随しているようなので、PuTTYjpのあとはこのPuTTYrvを使用させていただくことにしました。
PuTTYrvのダウンロードとインストール
PuTTYrvはプログラム一式が含まれたフォルダーを圧縮して配布されています。
PuTTYrvのダウンロード
今回は、64bit版(PuTTY-0.76-ranvis 2021-07-18 64bit .7z)をダウンロードしました。
2021年8月5日現在の最新バージョンは、公式版0.76をベースにした、2021-07-18です。
ダウンロード一覧からPuTTY-0.76-ranvis 2021-07-18 64bit .7zをクリックするとダウンロードが開始されます。
ダウンロードしたファイルは利用しているブラウザー設定のダウンロード先(通常はダウンロードフォルダ)に保存されます。
ダウンロードファイルの解凍
PuTTYrvをインストールするには.7zの圧縮ファイルが解凍できる必要があります。
おススメ7-Zip
今回は、PuTTY-0.76-ranvis 2021-07-18 64bit .7zを7-Zipにて解凍します。
解凍では「ここに展開」ではなく「PuTTY-0.76-ranvis-20210718.win64に展開」を選択しました。
これにより階層が深くなりますがバージョンごとにフォルダーが作成されます。
PuTTYrvのインストール
解凍したフォルダーごとインストール先(D:\tools)に移動すればインストールは完了です。
(インストール先は任意です。ポータブル版の場所をD:\tools以下にまとめている場合の例です)
タスクバーへの追加
インストーラを使用していないのでスタートメニューには追加されません。
putty.exeを右クリックでメニューを表示させて、PuTTYrvの起動を簡単にするために「タスクバーにピン留めする」を選択します。
同じメニュー上に「スタートメニューにピン留めする」もありますのでお好みで選択してください。
次回からはタスクバーまたはスタートメニューに表示されているPuTTYのアイコンをクリックすれば起動できます。
バージョンアップの場合
バージョンアップを行う場合、ダウンロードと解凍をすると別のフォルダーに新しいバージョンが配置されます。
これまでの設定を引き継ぐ場合は、putty.iniを現在のフォルダーから新しいフォルダーへコピー&ペーストすれば継続利用できます。
タスクバーの追加やスタートメニューへの追加はやり直す必要があります。
PuTTYrvの設定
INIファイル対応のパッチが適用されていますので、プログラムと同じフォルダーに.iniファイルが存在すればINIファイルの読み込みやINIファイルへの書き込みをします。
INIファイルが存在しない場合は、オリジナル版同様にレジストリーへアクセスします。
まず、「putty.sample.ini」を「putty.ini」に名前を変更します。
これにより設定はすべてputty.iniに保存されるようになり、起動時にはこのファイルを読み込みます。
個人用途であればそれほど多くの設定をしているとは思えませんので、レジストリー版とINI版を同時に起動して同じ設定になるように各設定項目を順番にINI版PuTTYへ反映していけばよいだけです。
公開鍵と秘密鍵の作成
すでに運用していてPuTTYrvの設定を行うだけならここは読み飛ばしてください。
パスワード認証の代わりに用いる公開鍵認証に必要な鍵の作成を行います。
鍵はSSHサーバ側に配置する公開鍵(.pub)とクライアント側に配置する秘密鍵(.ppk)のペアで作成します。
鍵の種類と強度
鍵の種類と強度はPuTTYgenで対応しているものです。
SSHサーバはOpenSSHを使用していますのでOpenSSHで対応している必要があります。
鍵の種類 | 強度 | OpenSSH対応状況 |
---|---|---|
SSH-1(RSA) | 2048ビット以上生成可能 | 未対応 |
RSA | 2048ビット以上生成可能 | 1024ビット以上 2048ビット デフォルト |
DSA | 2048ビット以上生成可能 | 1024ビット |
ECDSA | 256 ビット(nistp256) 384 ビット(nistp384) 521 ビット(nistp521) | 256 ビット 384 ビット 521 ビット |
EdDSA | 255 ビット(Ed25519) 448 ビット(Ed448) | Ed25519 |
安全な鍵の種類と強度に関しては以下のサイトが参考になります。
参考情報Recommendation for Key Management: Part 1 – General
2010年ころまでなら80ビットのセキュリティー強度をサポートする乱数生成器でよかったのが、2030年以降は128ビットのセキュリティー強度をサポートする乱数生成器を選択してくださいということのようです。
そのため、今回生成するのは、PuTTYおよびOpenSSHで対応していることを条件に鍵の種類はEdDSA、強度は255ビット(Ed25519)に決定しました。
PuTTY Key Generator
PuTTYにはPuTTY Key Generator(PuTTYgen)が付属しています。
このPuTTYgenを使用して、公開鍵認証に使用する鍵のペアを生成します。
生成(Generate)
以下を選択してアクションの生成(G)ボタンをクリックすると鍵が生成されます。
パラメータ:EdDSA
生成する鍵の曲線:Ed25519(255ビット)
パスフェーズの入力
鍵のパスフレーズを決めて入力します。
あとで使用しますので忘れないようにしてください。
公開鍵の保存(Save public key:id_ed25519.pub)
鍵の生成やパスフレーズなどに問題なければ公開鍵を保存(U)ボタンを押して公開鍵をファイルに保存します。
保存する場所とファイル名は任意です。好きな場所、名前で保存してください。
拡張子は.pubにしておくとわかりやすいです。
あとで使用しますので場所とファイル名は忘れないでください。
秘密鍵の保存(Save private key:id_ed25519.ppk)
続けて秘密鍵を保存(S)ボタンを押して秘密鍵をファイルに保存します。
保存する場所とファイル名は任意です。好きな場所、名前で保存してください。
拡張子は.ppkにしておくとわかりやすいです。
あとで使用しますので場所とファイル名は忘れないでください。
公開鍵と秘密鍵の保存場所
今回はPuTTYgenで生成した鍵のペアはkeysフォルダを作成し次の表のように保存しました。
※ご自身の環境に合わせて読み替えてください。
公開鍵 | C:\tools\keys\id_ed25519.pub |
---|---|
秘密鍵 | C:\tools\keys\id_ed25519.ppk |
公開鍵のアップロード
すでに運用していてPuTTYrvの設定を行うだけならここは読み飛ばしてください。
公開鍵認証方式でSSHクライアントからSSHサーバーへ接続できるように、先ほど生成した鍵ペアのうち公開鍵をSSHサーバーへアップロードします。
SSHサーバーへの接続情報、ユーザー個別のssh設定フォルダ、公開鍵格納ファイルは次の表の通りとして説明していきます。
※ご自身の環境に合わせて読み替えてください。
SSHサーバーのIPアドレス/Hostname(コントロールパネルより) | 133.125.40.141/ik1-438-51137.vs.sakura.ne.jp |
---|---|
ユーザー名(useradd) | sakura |
ユーザーのホームディレクトリ | /home/sakura |
ユーザ個別ssh設定フォルダ | /home/sakura/.ssh |
公開鍵格納ファイル(sshd_config) | authorized_keys |
まず、SSHサーバーに公開鍵をアップロードしなければなりません。
方法は次の2通りあります。
- 公開鍵ファイルを転送
- 公開鍵をコピー&ペースト
公開鍵ファイルを転送
先ほどPuTTYgenで生成した公開鍵のファイルをファイル転送ソフトを利用してSSHサーバー上のユーザー個別ssh設定フォルダへ転送する方法です。
初回設定を想定して、SSHサーバーにはユーザーIDとパスワードで認証が成功すれば接続できる状態として説明しています。
すでにSSHサーバ側でパスワード認証が拒否されているとこの方法では接続できません。
一時的にパスワード認証を許可するかすでに公開鍵認証で接続できるユーザを使って作業する必要があります。
ここではWinSCPを使用しています。
WinSCPの設定方法などは関連記事をご覧ください。
※ご自身の環境に合わせて読み替えてください。
ローカルフォルダと公開鍵 | リモートフォルダと公開鍵 |
---|---|
C:\tools\keys\id_ed25519.pub | /home/sakura/.ssh/id_ed25519.pub |
- WinSCPを起動します。
- 事前に作成したサイト「ik1-438-51137.vs.sakura.ne.jp」を選択して接続します。
- ローカルフォルダからリモートフォルダへ公開鍵id_ed25519.pubを転送します。
左の画面(ローカルフォルダ)から右の画面(リモートフォルダ)へドラッグアンドドロップで転送できます。
公開鍵をコピー&ペースト
ファイル転送では公開鍵のファイルをアップロードしました。一方、コピー&ペーストは、公開鍵のコードをコピーしてサーバー上のファイルへペーストするだけの方法です。
Windowsなどからリモートで操作している場合は、リモート接続のPuTTYなどを起動してるので、別途ファイル転送ソフトを起動する必要がない分こちらのほうが楽だと思います。
- ローカルにある公開鍵ファイルをノートパッドなどで開きます。
- すべてを選択してコピー(複製)します。
- 次にPuTTYなどを使用してリモート接続します。
- ファイル名をid_ed25519.pubでviエディタを起動します。
- インサートモード(i)にしてペースト(マウスの右ボタン)します。
- :wqで保存してviを終了します。
- cat id_ed25519.pubで確認します。
Windowsのエクスプローラーでファイルを選択して右クリックで表示されるメニューに「送る」があります。
ここにいつも利用するテキストエディタを登録しておけば、拡張子が.txt以外でも使用しているテキストエディタを使ってファイルを開くことが簡単にできます。
ファイル名を指定して実行に「shell:sendto」と入力して実行すれば、送るのメニューに表示されているフォルダが表示されます。この場所にファイルを保存すれば送るメニューに追加できます。実行ファイルからショートカットを作成したものをSendToフォルダに保存するのがおススメです。
2つの方法を紹介しましたが、リモート操作用にPuTTYなどは起動していることを前提に考えた場合、慣れてくるとコピー&ペーストの方が早いです。しかし、1行が長いコードをコピー&ペーストするとviエディタなどで複数行に分割される場合があります。そうすると正しくないコードになってしまい認証に失敗してしまいます。コピー&ペーストでは行数があっているかのチェックが必要です。viエディタであれば「:set num」で行数を表示するモードをONに「:set nonum」でOFFに切り替えることができます。
なお、.exrcに設定値を書き込んでおくとviの設定を変更できます。
OpenSSH用に変換
すでに運用していてPuTTYrvの設定を行うだけならここは読み飛ばしてください。
PuTTYgenで作成した公開鍵は複数行からなるフォーマットで形成されています。一方、OpenSSHでは鍵情報は1エントリは1行でなければなりません。
そのため、次の方法で変換が必要です。
変換前の公開鍵 | id_ed25519.pub |
---|---|
変換後の公開鍵 | authorized_keys |
sakura@ik1-438-51137:~/.ssh $ ssh-keygen -i -f id_ed25519.pub >> authorized_keys
authorized_keysには接続するそれぞれのクライアントの公開鍵を格納するため複数のエントリーを登録している場合があります。
そのため、「>」(上書き)でなく「>>」(追加)である点に注意してください。
authorized_keysを初めて作成する場合は上書きでも問題ありません。
パーミッションの修正
ユーザ個別のSSH設定フォルダ、その中の鍵ファイルや設定ファイルなどはすべて正しいパーミッションが設定されていないと認証に失敗するなど正しい動作をしません。
それぞれ以下の様にパーミッションを修正します。
ファイルまたはディレクトリ | パーミッション |
---|---|
.ssh | 0700 |
設定ファイルや鍵ファイルなど | 0600 |
sakura@ik1-438-51137:~/.ssh $ cd ..
sakura@ik1-438-51137:~ $ chmod 0700 .ssh
sakura@ik1-438-51137:~ $ ls -la .ssh
total 16
drwx------ 2 sakura sakura 512 Aug 9 09:44 .
drwxr-xr-x 3 sakura sakura 512 Aug 9 09:33 ..
-rw------- 1 sakura sakura 81 Aug 9 09:54 authorized_keys
-rw------- 1 sakura sakura 167 Aug 6 23:17 id_ed25519.pub
PuTTY(PuTTYrv)の設定
PuTTYは、SSHクライアントおよびTelnetクライントです。
その他、SCP、SFTPなどのアプリも付属していますがここではPuTTY本体の設定です。
PuTTYはSSHクライアントですので、ここで設定する内容はSSHサーバに依存関係がある項目があります。
PuTTY セッションの基本設定
まず、新しいセッションを作成します。
次の表の内容を入力して保存をクリックします。
※ご自身の環境に合わせて読み替えてください。
ホスト名 | ik1-438-51137.vs.sakura.ne.jp |
---|---|
ポート | 11022 |
保存済みセッション一覧 | ik1-438-51137.vs.sakura.ne.jp |
PuTTYのウィンドウの設定
デフォルトのウィンドウサイズが小さかったので次の表の数値に変更しました。
使用しているモニター画面のサイズに合わせてお好みで調整してください。
スクロールバックはスクロールで情報が流れてしまった場合にどれだけ戻れるかの設定です。
桁 | 127 |
---|---|
行 | 59 |
文字セット変換の設定
PuTTYrv版では、リモートの文字セットが異なります。
デフォルトの「UTF-8(CJK)」のままにしてあります。
サーバに送られるデータ
サーバへの接続時に送られるデータを設定します。
毎回同じユーザで接続するのであれば自動ログインユーザ名を設定しておけばユーザ名の入力を省略できます。
自動ログインユーザ名 | sakura |
---|
SSH接続の設定
SSHプロトコルバージョン 2が設定されていることの確認程度です。
SSH認証の設定
交換鍵認証の場合、秘密鍵ファイルの場所をここで設定します。
※ご自身の環境に合わせて読み替えてください。
認証のための秘密鍵ファイル | C:\tools\keys\id_ed25519.ppk |
---|
Using username "sakura".
Authenticating with public key "eddsa-key-20210806"
Passphrase for key "eddsa-key-20210806":
秘密鍵が空の場合は、パスワード認証を試行します。
Using username "sakura".
Keyboard-interactive authentication prompts from server:
| Password for sakura@ik1-331-25649.vs.sakura.ne.jp:
パスワード認証を想定していて以下のエラーが発生する場合は、SSHサーバ側で交換鍵認証のみ許可の状態でパスワード認証を許可していない場合です。
PuTTY セッションの基本設定
セッションの基本設定画面に戻って、保存をクリックして変更内容を保存します。
以上でPuTTYの設定は終了です。
以下は、PuTTYで公開鍵認証により、パスフレーズを入力して認証成功し接続できた状態です。
Using username "sakura".
Authenticating with public key "eddsa-key-20210806"
Passphrase for key "eddsa-key-20210806":
Last login: Mon Aug 9 09:41:09 2021 from xxxxx.zzzz.yyyy
FreeBSD 12.2-RELEASE-p7 GENERIC
Welcome to FreeBSD!
Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories: https://www.FreeBSD.org/security/
FreeBSD Handbook: https://www.FreeBSD.org/handbook/
FreeBSD FAQ: https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums: https://forums.FreeBSD.org/
Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with: pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.
Show the version of FreeBSD installed: freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages: man man
FreeBSD directory layout: man hier
Edit /etc/motd to change this login announcement.
Forget when Easter is? Try "ncal -e". If you need the date for Orthodox
Easter, use "ncal -o" instead.
-- Dru <genesis@istar.ca>
sakura@ik1-438-51137:~ $
PuTTYrvのインストールと設定方法について記載しましたが、PuTTYはWinSCPからも起動できるようにしておくと便利です。
この2つのアプリがあればリモートサーバの操作で困ることはないと思います。