公開鍵認証による SSH ログイン

セキュリティ強化のため、全学計算機システムの Linux サーバについて、学外からの SSH ログインは公開鍵認証によるもの以外は拒否するようになっています。ホームディレクトリに公開鍵を置いていないと、学外からは SSH ログインができません。

ホームディレクトリに鍵を置くには、サテライト室など学内からログインして作業する方法と、リモートデスクトップを使う方法があります。

仕組み

公開鍵認証は、公開鍵と秘密鍵のペアをあらかじめ作った上で、公開鍵はサーバ側に置き、秘密鍵はクライアント (ノート PC 等) 側に保管します。秘密鍵を持っている人でないと、ログインできない寸法です。

秘密鍵は、人間が入力できるパスワードに比べるととても長く、パスワード類推等によるサーバへの総当たり攻撃に対して強固になっています。また、正確には秘密鍵そのものがネットワーク上に送られることもなく、秘密鍵を持っているクライアントだけが答えられるなぞなぞをサーバが出すことによって認証を行うことも、安全性に貢献しています。

準備

キーペア(公開鍵、秘密鍵)の作成

以下のページの情報を参考に、PuTTYgen というツールを使って公開鍵、秘密鍵を作成します。

注意: 公開鍵は [Save public key] ボタンで保存ではなく、[Public key for pasting into OpenSSH authorized_keys file] 欄に表示されている公開鍵をコピーする方法で作成してください。

公開鍵のサーバへの転送

キーペアを作成したら、公開鍵をサーバに転送します。上記のページにも書いてありますが、要約すると次のような手順となります。

注意: 以下の手順は秘密鍵と公開鍵のペアをひとつだけ使う場合の手順です。既存の鍵も引き続き使用する場合は、公開鍵を ~/.ssh/authorized_keys にアペンドしてください。

  1. 公開鍵ファイルの名前を「authorized_keys」(拡張子なし) に変更しておきます。
  2. リモートアクセス経由で全学計算機システムの Windows デスクトップにリモート接続します。
  3. Z:ドライブの下に公開鍵の保存先ディレクトリ「.ssh」(ドット エス エス エイチ) がない場合は、以下の操作をします。
    • スタートボタンを右クリック → ファイル名を指定して実行 で現れる枠に「cmd」と入力します。
    • 以下のように入力します。
       Z:\> mkdir Z:\.ssh
  4. 作成しておいた公開鍵ファイル「authorized_keys」(拡張子なし) を .ssh ディレクトリの中にコピー (ファイル転送) します。
    • 注意:コピーするのは、公開鍵だけです。秘密鍵のコピーは不要です。

ログインのテストと初期設定

ターミナルソフトを使って、ログインできるかどうかの確認と、初期設定を行います。ここでは TeraTerm で行う例と、WinSCP で行う例を紹介します。

なお、初回ログインの際は、サーバのホストキーがキャッシュされていないため、接続先のサーバを信用するかどうかの確認ダイアログが表示されます。その場合は、ダイアログに表示されている鍵のフィンガープリントとこちらのページの一番下にあるフィンガープリントを照合して、正しいサーバに接続しているかどうかを確認してください。

ターミナルソフトでログイン

  1. Teraterm でログイン

  2. 初回ログインが成功したら
    % chmod 600 ~/.ssh

    としておくとより安全です (2 回目以降は不要です) 。

ファイル転送ソフトでログイン

  1. WinSCP でログイン

    秘密鍵を指定した後、パスワードの欄はとりあえず空欄にして「ログイン」ボタンを押します。すると、後から秘密鍵のパスフレーズを求められるので、その時に PuTTYgen で作成したときに指定したパスフレーズを入力します。