MobaXtermと公開鍵認証方式を用いたログイン

MobaXterm(SSH)を用いてUNIX(Linux)システムにログインするときは、利用者が端末から入力したパスワードがネットワーク上を伝わります。
パスワードは暗号化されていますが、他人が傍受することが可能で、時間をかけて暗号を解析されるとパスワードがばれてしまいます。

そこでよりセキュアな方式として公開鍵認証方式を用いることができます。
これは、公開鍵と秘密鍵のペアを作成し、UNIXシステム側に公開鍵、利用者端末側に秘密鍵を置き、毎回異なる乱数をやり取りすることで認証を行うものです。
秘密鍵はネットワーク上に伝わることがないので、通信を傍受されても秘密鍵がばれることがありません。
設定によりますが、公開鍵認証方式を用いるとセキュアな状況を守ったまま、ユーザIDとパスワードの入力を省略してログインすることもできます。

当研究室のサーバは、研究室内のPCからログインするときはパスワード入力と公開鍵認証方式、外部からログインするときは公開鍵認証方式のみ有効です。
  1. MobaXtermによる公開鍵ペアの作成
  2. 公開鍵をWindows上のファイルに保存
  3. 秘密鍵をWindows上のファイルに保存
  4. CAD機に公開鍵保存ディレクトリ作成
  5. 公開鍵をCAD機に保存
  6. 公開鍵認証方式を使用するようにセッションを設定
  7. ログイン
  8. 秘密鍵のコピー


1. MobaXtermによる公開鍵ペアの作成

MobaXtermを起動し、メニューからMobaKeyGenを呼び出します。


以下のようなウィンドウが表示されます。

鍵形式として「Ed25519」を選択して「Generate」をクリックします。
鍵生成が始まるとプログレスバーが表示されます。そのバーの下の領域でマウスポインタをランダムに動かします。

マウスポインタを動かすにつれてプログレスバーが進みます。
鍵が生成されると以下のような画面になります。

2. 公開鍵をWindows上のファイルに保存

MobaKeyGenのウィンドウで、以下のように赤枠で囲った部分に注目します。

この部分の文字列を全選択してクリップボードにコピーし、メモ帳などのテキストエディタに貼り付けて、「authorized_keys」というファイル名で保存します。
なお、画面中ほどに「Save public key」というボタンがありますが、これを利用して保存したファイルではsshログインに失敗するので、必ず上記のコピーと貼り付けの方法を用いてください。

3. 秘密鍵をWindows上のファイルに保存

秘密鍵をWindows側に保存します。
以下の四角で囲った部分にパスフレーズを同じものを2度入力します。

このパスフレーズ(パスワード)は、UNIXシステムにログインするためのパスワードではなく、Windowsの他のユーザに秘密鍵を読み取られることを防ぐために秘密鍵を暗号化するためのものです。
この暗号化をしないと、他のユーザが自分のアカウントでUNIXシステムにログインできてしまうことになり、大変問題になります。
共用パソコンなどで他のユーザが読めるハードディスク領域に秘密鍵を保存する必要があるときは暗号化は必須ですが、自分だけが読める領域、例えばマイドキュメントに秘密鍵を入れる場合は暗号化(パスフレーズ)は不要です。しかしながら、何があるかわからないので暗号化しておくことを推奨します。
パスフレーズはUNIXログインパスワードと同じものでも構いませんが、異なるものの方がよいでしょう。
なお、後でパスフレーズの入力が必要になるので、ここで設定したパスフレーズは忘れてはいけません。
パスフレーズを入力したら「Save private key」をクリックし、ファイル名を指定して保存します。
秘密鍵ファイルの拡張子は「.ppk」としておきます。

4. CAD機に公開鍵保存ディレクトリ作成

ここでいったんCAD機(Linux)にパスワードログインします。
パスワードログインは大学の研究室内のPCからのみ可能です。
まず、UNIXシステムの自分のホームディレクトリに「.ssh」という名前のディレクトリがあるか確認します。
これは、UNIXコマンドの「ls -ld ~/.ssh」を実行します。
以下のようになるか確認します。("???"の部分には適当な文字列が入ります)
abcd0123@cadhost[45] ls -ld ~/.ssh
drwx------ 2 abcd0123 elc 4096 Apr 11 12:40 /home/???/abcd0123/.ssh/
以下のようになる場合は.sshディレクトリが存在していません。
abcd0123@cadhost[45] ls -ld ~/.ssh
ls: /home/???/abcd0123/.ssh: No such file or directory
もし.sshディレクトリが存在しなければmkdirコマンドでディレクトリを作成します。
abcd0123@cadhost[46] mkdir ~/.ssh
なお、.sshディレクトリを新規作成した場合、およびlsコマンドを実行したときの表示で左端が"drwx------"となっていない場合は以下のようにchmodコマンドを実行します。
abcd0123@cadhost[47] chmod 700 ~/.ssh

5. 公開鍵をCAD機に保存

生成した公開鍵authorized_keyを.sshディレクトリに保存します。
これは、MobaXtermウィンドウの左側に表示されるsftpを利用すると簡単です。 .sshディレクトリにauthorized_keysファイルをドラッグ&ドロップします。
Windows上のauthorized_keysは不要なので削除しても構いません。

6. 公開鍵認証方式を使用するようにセッションを設定

セッションを新規作成するか、既存のセッションのプロパティを編集します。

「Advanced SSH settings」タブを開き、「Use private key」をチェックします。
そのチェックの右の欄に秘密鍵ファイルのファイル名を入力します。
「Basic SSH settings」に「Specify username」の欄がありますが、ここをチェックするとともにUNIXアカウント名を記入しておくと、UNIXシステムログインの際にアカウントを入力する必要がなくなります。
入力を確認して「OK」をクリックします。

7. ログイン

MobaXtermで公開鍵認証方式を使うように設定したセッションを開きます。
以下のように秘密鍵のパスフレーズを入力するよう促されるので、秘密鍵を保存したときに暗号化に使ったパスフレーズを入力します。

パスフレーズが正しければUNIXシステムにログインできます。
なお、ここで入力したパスフレーズはMobaXtermが記憶するので、次にログインするときにはパスフレーズの入力は不要です。
ただし、MobaXtermを終了するとパスフレーズの記憶も破棄されるので、MobaXtermを再起動したときには改めてパスフレーズの入力が必要です。

8. 秘密鍵のコピー

公開鍵認証方式では公開鍵と秘密鍵のペアが合っていることで認証を行います。
上で作成した秘密鍵を例えば自宅のPCにコピーし、上に示したようにMobaXtermを設定すればUNIXシステムへのログインが可能になります。

2023年12月13日
2022年4月12日
2020年5月19日
2017年4月17日