PuTTYgen での鍵生成と公開鍵のサーバへの転送

ここでは、学外の Windows パソコンから WinSCP 等で公開鍵認証をする場合を想定して、そのための準備として、PuTTYgen というツールを利用してキーペア (公開鍵、秘密鍵) を作成する手順を説明します。

基本的な事項

  • サーバ側には公開鍵を設置し、手元のパソコン側 (クライアント側) には秘密鍵を設置します。
  • 秘密鍵の取扱いには注意が必要です。他人などに悪用されないよう設置場所と管理方法には特にご留意ください。万一の場合に備えて、鍵生成の際には、必ずパスフレーズの登録をお忘れなく。
  • 秘密鍵のパスフレーズは実アカウントのパスワードとは別なので、同じものを絶対に指定しないこと。

鍵生成の手順

  1. PuTTYgen を入手し、起動します。
    • PuTTYgen は、WinSCP のインストール時に通常一緒にインストールされます。手元のパソコンにすでに WinSCP をインストールしている場合は、一度 WinSCP を起動した後、「ツール」ボタンをクリックし、「PuTTYgen を実行」を選択することで起動します。
      Tools-Run PuTTYgen
    • WinSCP をこれからインストールする場合は、下記のサイトからダウンロードできます:
      https://winscp.net/
    • WinSCP をインストールしない (あるいは、WinSCP のインストール時に PuTTYgen を一緒にインストールしなかった) 場合は、下記のサイトから PuTTYgen を直接ダウンロードすることもできます:
      https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
      このサイトから puttygen.exe をダウンロードし、適当な場所 (例えば、デスクトップなど) に保存して、それをダブルクリックして起動します。
  2. PuTTYgen を起動すると、「PuTTY Key Generator」ダイアログボックスが表示されます。
    PuTTY Key Generator
    「Parameters」欄では「RSA (SSH-2 RSA)」を選択し、「Number of bits in a generated Key」欄ではそのまま「2048」を指定して「Generate」ボタンを押します。
  3. 枠内でマウスを動かすことで乱数が生成されて緑色のバーが増加します。全て緑色になるまでマウスを任意に動かし続けます。
    Randomness
  4. 乱数の生成が済むと、それを種にして公開鍵と秘密鍵が生成されます。生成された鍵を保存するには、それぞれ次のようにします。

秘密鍵の保存

  • 「Key comment」欄は、任意に指定できます。必要に応じて、公開鍵認証の際に表示するコメントを指定します。
  • 「Key passphrase」欄と「Cofirm passphrase」欄に、パスフレーズを必ず入力しておきます。パスフレーズは長文(空白文字も指定可)でも指定できるので、忘れない程度で長めに設定することをお勧めします。実アカウントのパスワードとは別なので、同じものを絶対に指定しないこと。
    Key passphrase
  • 「Save private key」ボタンを押して、秘密鍵を手元のパソコン内に保存します。保存場所は任意ですが、デスクトップやファイル共有などで他人が容易にアクセスできない場所にしましょう。

公開鍵の保存

  • [Public key for pasting into OpenSSH authorized_keys file] 欄に表示されている公開鍵を使用します。枠内に表示されていない部分もあります。スライドバーで全体を確認して、全て選択した状態でマウスの右ボタンを押して、「コピー」を選択します。
    Public key
  • メモ帳などを起動し、コピーした公開鍵を張り付けて、公開鍵の内容を適当な場所に保存します。
    • 公開鍵は一行で構成される長い文字列です。途中で改行などが入らないように保存します。
    • ファイル名は任意です。初めて公開鍵認証を設定する場合は、「authorized_keys」というファイル名にしておくと後でリネームする手間を省けます。その場合、拡張子は不要なので、例えば ” .txt ” のような拡張子が付加されないようにご注意ください。もし保存時に自動的に拡張子が付加されたら後でファイル名を変更する必要があるので、事前に拡張子が表示されるように設定をしておくと良いでしょう。

公開鍵のサーバへの転送

次に、手元のパソコンに保存した公開鍵を全学計算機システムのサーバに転送します。

  • サーバ側での設置場所は、自分のホームディレクトリに .ssh というディレクトリ (フォルダ) を作成し、その中に authorized_keys というファイル名で保存します (~/.ssh/authorized_keys)。 .ssh は ドット エス エス エイチ です。
  • 以前に登録済みで既に authorized_keys ファイルが存在する場合は、追記で保存します。authorized_keys ファイルには複数の公開鍵を登録できます (1つの鍵につき1行)。

公開鍵をサーバ側に設置する方法はいくつかありますが、ここではリモートデスクトップ経由で転送する方法について説明します。

* authorized_keys のアップロード方法によっては、ファイルのパーミッションが不適切 (000) になってしまい、設定に失敗することがあるようです (特に、コピー&ペーストでアップロードした場合)。良く分からない場合は、.ssh ディレクトリの作成や、authorized_keys のアップロードを下記とまったく同じ方法で行ってください。

  1. リモートデスクトップ接続の基本的な方法については、全学計算機システムのリモートアクセスのページを参照してください。ここでは、「Web ブラウザで接続 (HTML5)」した場合を想定して説明します。
  2. 公開鍵をサーバ側へ設置するため、コマンドプロンプトを起動して .ssh ディレクトリを作成することにします (※以前に作成済みの場合は、この項目は読み飛ばしてください)。
    リモートデスクトップの画面で「スタート」ボタンを右クリックして、「ファイル名を指定して実行」を選択し、表示された欄に cmd と入力して「OK」をクリックするとコマンドプロンプトが起動します。
    コマンドプロンプトが表示されたら、下図のようにコマンド (mkdir Z:\.ssh) を入力して ENTER キーで実行します。
    cmd.exe
  3. リモートデスクトップ上でエクスプローラーを起動し、Z ドライブの中を確認すると、.ssh ディレクトリが作成されているはずです。
    .ssh directory
  4. PuTTYgen で生成した公開鍵 (authorized_keys) をこの .ssh ディレクトリの中にコピーします。
    既に authorized_keys ファイルが .ssh ディレクトリの中に存在している場合は、その authorized_keys ファイルを上書きしないようご注意ください。その際は、メモ帳等で公開鍵を開いてコピーしてから、Z ドライブの .ssh ディレクトリにある authorized_keys ファイルの末尾に追記 (ペースト) することをお勧めします。

    手元のパソコンとリモートデスクトップとの間でファイルをやりとりする方法については、全学計算機システムのリモートアクセスのページの、「ファイルの転送」の部分をご参照ください。ここでは、「Web ブラウザで接続 (HTML5)」した場合に authorized_keys ファイルを .ssh ディレクトリにコピーする方法を説明します。

    1. 中央左のタブをクリックし、現れたタブ内上部の左から 2 番目のボタンをクリックし、「ファイル転送」パネルを開きます。
      File Transfer
    2. 「ファイル転送」パネルの「アップロード」タブを選択し、手元のパソコンに保存してある authorized_keys ファイルをドラッグ & ドロップするか、または [ファイルの選択] ボタンから選択します。
    3. アップロード後、ファイルは「ドキュメント (Documents)」フォルダに保存されるので、それを .ssh ディレクトリにドラッグアンドドロップしてコピーします。
      copy

    以上で、公開鍵認証のための準備は完了です。

WinSCP による公開鍵認証でのログイン

公開鍵の準備ができたので、手元のパソコンから WinSCP を使って公開鍵認証でログインしてみます。まず準備として、WinSCP でのセッションの設定で、保存しておいた秘密鍵の場所を入力しておく必要があります。

  1. 手元のパソコンで WinSCP を起動し、「新規」ボタンを押して、設定を追加します。
    WinSCP ログイン

    • 「ホスト名」欄には、icho.u.tsukuba.ac.jp
    • 「ユーザ名」欄には、全学計算機システムのユーザ名 (s7654321 または family.given.xx の形) を入力します。
    • 「パスワード」欄では、何も指定せずに空白にします。既に設定してある場合は、消してください。(ここで指定してしまうと、通常のパスワードで認証されてしまいます。)
    • 秘密鍵を指定するには、パスワード欄の下にある「設定」ボタンを押して、「高度なサイトの設定」ウインドウを表示させます。
      「高度なサイトの設定」ウインドウで左側のメニューの [SSH]-[認証] をクリックして出てきた設定項目のうち、「認証条件」の部分にある「秘密鍵」欄に、保存した秘密鍵を指定します。入力したら「OK」ボタンを押して「高度なサイトの設定」ウインドウを閉じます。
    • 「保存」ボタンを押して、この設定情報を登録しておくと、次回以降にログインする際にこの設定を利用できます。
    • 設定を入力したら、「ログイン」ボタンを押して、実際に公開鍵認証でログインしてみましょう。
  2. 初回接続時の場合は、以下のような警告が出て、接続先ホストを信頼するかどうか聞かれます。表示されているフィンガープリントとこちらのページの一番下に書いてあるフィンガープリントとを照合し、特に不審な点がなければ「はい」ボタンをクリックして接続を続行します。
    WinSCP 警告
  3. 公開鍵認証でログインする際には、パスフレーズの入力を求められます。PuTTYgen で作成した際に指定したパスフレーズを入力して「OK」ボタンを押します。
    パスフレーズの入力
  4. 公開鍵認証が通れば、WinSCP のウインドウが開きます。「環境設定」ボタン (歯車のマーク) を押せば、詳細な設定ができます。その他、WinSCP の詳しい利用方法については、ヘルプやインターネットで検索してご利用ください。
    WinSCP 外観

「サーバが鍵を拒否しました」と出て接続できない場合

以下のポイントをチェックしてみてください。

  • .ssh ディレクトリと authorized_keys のパーミッション
    .ssh のパーミッションは 700, authorized_keys のパーミッションは 600 にしてください。良く分からない場合は、いったん削除またはリネームして、.ssh ディレクトリの作成方法と authorized_keys のアップロード方法を、このページに書いてあるやり方とまったく同じにして再度お試しください。
  • アップロードした公開鍵と手元で指定した秘密鍵の対応
    秘密鍵の作成・保存時に表示されている公開鍵をお使いください。
  • 公開鍵の保存時に全体を選択しているか
    最初の ssh-rsa も含めます。また、枠内に表示されていない部分もあるのでスライドバーで全体を確認して、全て選択した状態でコピーしてください。
  • 公開鍵の保存時に改行が入っていないか
    途中に改行が入らないようにして保存してください。