要点
PuTTY(Windows)とLinuxサーバでパスワードではなく公開鍵認証を使う手順を示します。公開鍵認証は秘密鍵を持つ人だけがログインできるため、安全性が高まります。この記事はPuTTY、PuTTYgen、Pageantを使う具体的な手順と、運用上の注意点・トラブルシューティングを含みます。
目的と関連フレーズ
プライマリ目的: SSH公開鍵認証をPuTTYとLinuxサーバで設定する 関連バリエーション: PuTTY 鍵認証、Linux サーバ SSH キー、公開鍵認証 設定、Pageant 秘密鍵読み込み、PuTTYgen 鍵生成
前提条件
- Windows上でPuTTY一式を実行できること(管理者である必要は通常ない)。
- Linuxサーバにrootまたはsudo権限でログインできること。
- 公開鍵・秘密鍵の扱いに注意できること(秘密鍵は絶対に公開しない)。
1. PuTTYのバイナリを入手する
以下のzipにPuTTYの実行ファイルがまとまっています。ブラウザで開いてダウンロードしてください(リンクはそのまま)。
http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip
注記: 公式配布元か信頼できる配布サイトから入手してください。
2. 秘密鍵と公開鍵のペアを生成する(PuTTYgen)
- ダウンロードしたzip内の PuTTYgen.exe を実行します。UIの「Generate(生成)」ボタンを押します。
- マウスを動かして乱数を供給します。鍵が生成されます。
- 鍵のパスフレーズ(秘密鍵を保護するパスワード)を入力します。推測されにくい文字列を使ってください。
- 「Save public key(公開鍵を保存)」と「Save private key(秘密鍵を保存)」でそれぞれファイルを保存します。
重要: 公開鍵はサーバ側に設置します。秘密鍵は安全な場所(パスフレーズを設定した上で)に保管してください。
3. Linuxサーバの設定(ユーザ作成と公開鍵の保存)
この例ではログインユーザ名を autotimesheet とします。実運用では自分のユーザ名に置き換えてください。
まずrootでシェルに入り、ユーザを作成します:
adduser autotimesheet --disabled-password
プロンプトが出たら実名などを入力できます。空のままでも構いません。
次にそのユーザに切り替え、ホームディレクトリ内に .ssh フォルダを作ります:
su autotimesheet
cd /home/autotimesheet
mkdir .ssh
chmod 700 .ssh
cd .ssh
このフォルダ内に authorized_keys2 というファイルを作り、PuTTYgenで保存した公開鍵の中身を1行で貼り付けます。重要な注意点は次の通りです。
重要:
- 公開鍵は必ず1行で貼り付けてください(改行を入れない)。
- 行の末尾にメールアドレスのようなコメント([email protected])を追加しないでください。元のフォーマットで十分です。
- “BEGIN PUBLIC KEY” や “END PUBLIC KEY” のブロックは入れないでください。
- 鍵の先頭に “ssh-rsa” などのアルゴリズム表記があることを確認してください。
例(部分):
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBzPeFQv+295iKzuuPH0jA9449pSHVpCwXvCR9EstmYh...
保存後、権限を設定します:
chmod 600 authorized_keys2
注: 最近の多くのシステムではファイル名は authorized_keys(sなし)が一般的です。既存の環境に合わせてください。authorized_keys2 は古い慣習ですが、システム側のsshd設定に合わせてください。
4. 秘密鍵をPuTTYの認証エージェント(Pageant)に追加する
- Pageant.exe を起動します(PuTTY一式に含まれます)。
- 起動すると通知領域(タスクトレイ)にアイコンが表示されます。アイコンを右クリックし、”Add Key”(鍵を追加)を選びます。
- 先ほど保存した秘密鍵ファイルを選び、パスフレーズを入力します。
Pageantはパスフレーズを保持し、PuTTYからの鍵要求に自動で応答します。これにより接続時にパスフレーズを都度入力する必要がなくなります。
5. PuTTYでサーバに接続する
PuTTYを開き、接続先を autotimesheet@yourserver のようにして接続します。
Pageant経由で認証が成功すると、パスワード入力なしでログインできます。
トラブルシューティング — よくある失敗例と対処
- 鍵が1行でない、先頭のアルゴリズム表記が抜けている: authorized_keys2 の中身を確認して1行に修正する。
- 権限が緩すぎる: ホームディレクトリや .ssh、authorized_keys(2) のパーミッションを見直す。推奨: homeは通常700/755、.sshは700、authorized_keysは600。
- sshdの設定が公開鍵認証を許可していない: /etc/ssh/sshd_config 内の PasswordAuthentication、PubkeyAuthentication を確認し、必要ならサーバを再起動。
- Pageantに鍵を読み込んでいない: タスクトレイアイコンで鍵が登録されているか確認。
- 鍵の形式の不一致: PuTTY用の鍵(.ppk)とOpenSSH形式ではフォーマットが異なる。PuTTYgenで必要な形式に変換する。
代替アプローチ
- Windows 10/11 の「OpenSSH クライアント」を使う: Windowsネイティブのsshコマンドで鍵認証を行う方法。PuTTYを使わず、OpenSSH形式の鍵を用意する。
- WSL(Windows Subsystem for Linux)上のsshを使う: Linux互換の環境で通常のOpenSSHワークフローを利用する場合に有効。
- 証明書ベースの認証(SSH Certificate Authority): 多数のユーザを管理する場合はCAで鍵の有効期限や発行管理を行う方が便利。
セキュリティ強化のヒント
- パスワード認証を無効化する(sshd_config の PasswordAuthentication no)。
- ルートログインを禁止する(PermitRootLogin no)。
- 公開鍵の管理とローテーション方針を整える。期限切れの鍵は削除する。
- 鍵のバックアップは慎重に。秘密鍵のバックアップは暗号化コンテナや安全なシークレット管理に保管する。
チェックリスト(役割別)
- 管理者: サーバ側でsshd_configをチェック、必要な権限とログを確認する。
- エンドユーザ: PuTTYgenで鍵を生成し、公開鍵だけをサーバ管理者に渡す。秘密鍵は渡さない。
ミニ手順(短い復習)
- PuTTYをダウンロード。2. PuTTYgenで鍵を作成。3. サーバの~/.ssh/authorized_keys(2) に公開鍵を追加。4. Pageantに秘密鍵を読み込む。5. PuTTYで接続。
用語1行定義
- SSH: 安全なリモートログインと通信のプロトコル。
- 公開鍵/秘密鍵: 片方を公開してサーバに置き、もう片方を秘密に保つ認証方式。
- Pageant: PuTTYの認証エージェント。秘密鍵を保持して代理で署名する。
- PuTTYgen: PuTTY用の鍵生成ツール。
要約
- 公開鍵認証はパスワードより安全です。PuTTY、PuTTYgen、Pageantを使えばWindows環境でも簡単に導入できます。サーバ側の権限とsshd設定に気をつけ、鍵の取り扱いは厳重に行ってください。
重要: 秘密鍵は第三者に渡さないでください。公開鍵のみをサーバに設置します。