テクノロジーガイド

PuTTYとLinuxでSSH公開鍵認証を5ステップで設定する

2 min read サーバー管理 更新されました 30 Sep 2025
PuTTYでSSH公開鍵認証を5ステップで設定
PuTTYでSSH公開鍵認証を5ステップで設定

要点

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)

  1. ダウンロードしたzip内の PuTTYgen.exe を実行します。UIの「Generate(生成)」ボタンを押します。
  2. マウスを動かして乱数を供給します。鍵が生成されます。
  3. 鍵のパスフレーズ(秘密鍵を保護するパスワード)を入力します。推測されにくい文字列を使ってください。
  4. 「Save public key(公開鍵を保存)」と「Save private key(秘密鍵を保存)」でそれぞれファイルを保存します。

PuTTYの鍵生成画面のスクリーンショット

重要: 公開鍵はサーバ側に設置します。秘密鍵は安全な場所(パスフレーズを設定した上で)に保管してください。

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)に追加する

  1. Pageant.exe を起動します(PuTTY一式に含まれます)。
  2. 起動すると通知領域(タスクトレイ)にアイコンが表示されます。アイコンを右クリックし、”Add Key”(鍵を追加)を選びます。
  3. 先ほど保存した秘密鍵ファイルを選び、パスフレーズを入力します。

Pageantはパスフレーズを保持し、PuTTYからの鍵要求に自動で応答します。これにより接続時にパスフレーズを都度入力する必要がなくなります。

5. PuTTYでサーバに接続する

PuTTYを開き、接続先を autotimesheet@yourserver のようにして接続します。

PuTTYでサーバへ接続する画面のスクリーンショット

Pageant経由で認証が成功すると、パスワード入力なしでログインできます。

公開鍵エージェントから認証するPuTTYの画面

トラブルシューティング — よくある失敗例と対処

  • 鍵が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で鍵を生成し、公開鍵だけをサーバ管理者に渡す。秘密鍵は渡さない。

ミニ手順(短い復習)

  1. PuTTYをダウンロード。2. PuTTYgenで鍵を作成。3. サーバの~/.ssh/authorized_keys(2) に公開鍵を追加。4. Pageantに秘密鍵を読み込む。5. PuTTYで接続。

用語1行定義

  • SSH: 安全なリモートログインと通信のプロトコル。
  • 公開鍵/秘密鍵: 片方を公開してサーバに置き、もう片方を秘密に保つ認証方式。
  • Pageant: PuTTYの認証エージェント。秘密鍵を保持して代理で署名する。
  • PuTTYgen: PuTTY用の鍵生成ツール。

要約

  • 公開鍵認証はパスワードより安全です。PuTTY、PuTTYgen、Pageantを使えばWindows環境でも簡単に導入できます。サーバ側の権限とsshd設定に気をつけ、鍵の取り扱いは厳重に行ってください。

重要: 秘密鍵は第三者に渡さないでください。公開鍵のみをサーバに設置します。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定