PuTTYを用いた公開鍵認証でのSSH接続
PuTTY-ranvisを用いた公開鍵認証でのSSH接続の設定方法についての備忘録
はじめに
Simon Tatham氏によるWindows用リモート接続クライアントであるPuTTYのカスタムビルド版PuTTY-ranvis(公式版に日本語UI,ISO 2022対応などのパッチを適用したもの)を用いて公開鍵認証方式でSSH接続を行う.
接続先は Rocky Linux や Ubuntu などが導入された Linux サーバとし,SSH接続が許可されているものとする.このサーバにユーザ名 user
のアカウントが存在し,このユーザ user
でSSH接続する(ただし,user
のホームディレクトリに,グループや他のユーザの書き込み権限が与えられていると公開鍵認証での接続ができないので注意).
PuTTY-ranvis のインストール
接続元のWindows PCにおいて,PuTTY-ranvisのサイトから PuTTY-ranvis の最新版(0.83 (2025-02-09))をダウンロードし,任意のフォルダに展開する.32bit か 64bit,7z圧縮版かインストーラ版があるので自身の環境にあったものをダウンロードすればよい(インストーラ版をダウンロードした場合は,インストーラを起動し,指示に従ってインストールする).
展開した PuTTY-ranvis フォルダ内には以下のファイルが存在する.
公開鍵認証方式でのSSH接続の設定
PuTTYgen による公開/秘密鍵ペアの生成
PuTTY-ranvis フォルダ内の puttygen.exe をクリックして PuTTYgen を起動すると以下のウィンドウが表示される.パラメータ欄で生成する鍵の種類と強度(ビット数)を設定できるが,デフォルト(鍵の種類:RSA,ビット数:2048)のままで構わない(RSAとDSAではほとんどの目的で2048ビットで十分とされている).
アクション欄の一番上の「生成」ボタンを押すと,以下の表示になるので,「乱数を生成するために空白のエリア上でマウスを動かしてください。」の下のエリアで薄赤線で示したように適当にマウスを動かし続ける.緑のバーが右端に達したら鍵の生成が終了する.
鍵の生成が終了したら,以下の表示になるので,必要に応じてパスフレーズの入力を行う.パスフレーズを空欄に設定するとパスフレーズ無しで接続できる(自動化したバッチスクリプトでSSH接続を確立するなどの特別な場合以外ではパスフレーズを設定するべき).
パスフレーズを入力後,公開鍵と秘密鍵を保存する.ユーザフォルダ直下に .ssh
フォルダを作成し,公開鍵を id_rsa.pub
,秘密鍵を id_rsa.ppk
というファイル名で保存する.保存したら,PuTTYgenを終了してよい.
公開鍵のサーバへの転送
上で生成した公開鍵をSSH接続先のサーバへ転送する.コマンドプロンプトでPuTTY-ranvis フォルダ(pscp.exe
の存在するフォルダ)に移動して以下を実行し,サーバ上の user
のホームディレクトリ直下に id_rsa.pub
を転送する.
C:/PuTTY-ranvis> .\pscp C:\Users\user\.ssh\id_rsa.pub user@サーバのIPアドレス:
サーバの user
のパスワードを求められるので,入力して問題なく転送されると以下のメッセージが表示される.
id_rsa.pub | 0 kB | 0.5 kB/s | ETA: 00:00:00 | 100%
次に,サーバに user
でログインする.ホームディレクトリに .ssh
フォルダがなければ作成してアクセス権限を700に設定する.
$ mkdir .ssh
$ chmod 700 .ssh
ホームディレクトリに公開鍵 id_rsa.pub
が転送されていることを確認し,以下のコマンドで公開鍵を .ssh/authorized_keys
に追加し,ホームディレクトリの id_rsa.pub
を削除しておく.
$ ssh-keygen -i -f id_rsa.pub >> .ssh/authorized_keys
$ rm id_rsa.pub
authorized_keys
のアクセス権限を600に設定する(既に設定されていれば何もしなくてよい).
$ chmod 600 .ssh/authorized_keys
.ssh
ディレクトリや authorized_keys
に,グループや他のユーザの書き込み権限を与えていると,公開鍵認証での接続ができなくなる.
SSH の設定
必要に応じて /etc/ssh/sshd_config
ファイルをroot
権限で編集する(公開鍵認証はデフォルトで有効になっている).
# vim /etc/ssh/sshd_config
- パスワード認証の禁止
公開鍵認証でSSH接続できるようになったら,セキュリティを高めるためにパスワード認証によるSSH接続を禁止した方が良い.
#PasswordAuthentication yes
↓
PasswordAuthentication no
ただし,パスワード認証によるSSH接続を禁止すると,公開鍵認証でのみ接続可能となるので,公開鍵認証の設定をしないでパスワード認証を禁止するとリモート接続ができなくなる.
- 公開鍵認証の許可(SSH2のみ)
コメントアウトされていてもデフォルトで有効になっているので,変更する必要はないが念のため.
#PubkeyAuthentication yes
↓
PubkeyAuthentication yes
- ポート番号の変更
#Port 22
↓
Port ○○
○○ は任意のポート番号.
PuTTY による公開鍵認証方式でのSSH接続
PuTTY-ranvis フォルダ内の putty.exe をクリックして PuTTY を起動すると,以下のPuTTY設定ウィンドウが開き,セッション設定画面が表示されるので,「ホスト名(または IP アドレス)」欄に接続先サーバのホスト名か IP アドレスを入力し,ポート番号を変更した場合はその番号に設定する.
次に,左のカテゴリ内の「接続」⇒「SSH」⇒「認証」⇒「クレデンシャル」を選択すると,以下の表示になるので,「認証のための秘密鍵ファイル」の参照ボタンをクリックして,秘密鍵の生成で保存した秘密鍵ファイル id_rsa.ppk
を指定する.
これらの設定は,セッション設定画面で適当に名前を付けて保存しておくとよい.
PuTTY設定ウィンドウの下にある「開く」ボタンを押すと接続先サーバに公開鍵認証方式でSSH接続が行われる.