リモートアクセス・ネットワークセキュリティ

  1. 今後, 実技を進めるときのお願い
  2. 実習の前準備
  3. パスワード認証を用いたリモートアクセス
  4. ネットワークセキュリティ
  5. 公開鍵認証を用いたリモートアクセス

4. 公開鍵認証を用いたリモートアクセス

公開鍵認証を用いたリモートログインの手法もあります. リモートログインにパスワードを使用しないため, パスワードなどの機密情報がネットワークに送信されずパスワード推測攻撃に強いということや, リモートログイン時のパスワード入力の手間が省ける利点があります. しかし, 生成された秘密鍵の取り扱いには注意が必要です. 生成した秘密鍵を誤って外に漏らさないように気を付けましょう.

[4.1] 公開鍵の作成

ローカルホストにて以下のコマンドで公開鍵を作成します.

local$ ssh-keygen

デフォルトでは Ed25519 という暗号化アルゴリズムの 256 bit 長の鍵が生成されます. 使用する暗号化アルゴリズムの設定は ssh-keygen コマンドの -t オプションで変更できます (気になった方は man コマンドで ssh-keygen コマンドのマニュアルを見てみましょう).

以下のように生成した鍵の保存場所を聞かれます. デフォルトの設定で問題ないので Enter キーを押してください. hoge はローカルホストでの皆さんのアカウント名です.

Enter file in which to save the key (/home/hoge/.ssh/id_ed25519): 

次に公開鍵を使用する際にローカルホスト側で要求されるパスフレーズ (合言葉) の入力が求められます. パスフレーズを設定したい場合は自分で考えたパスフレーズを入力した後 Enter キーを押して次に進んでください.
特に必要がない場合は Enter キーを押してスキップしても大丈夫です.

Enter Passphrase (empty for no passphrase):

パス"フレーズ"はパス"ワード"とは異なり,"文章"が設定できます. また空白文字も使用可能です.パスフレーズを設定することでセキュリティをより強化することができます.

再度パスフレーズの入力が求められるのでパスフレーズを設定した場合は先程と同様のものを入力し, Enter キーを押して次に進んでください.
先程スキップした場合は今回も Enter キーを押してスキップしてください.

Enter same Passphrase again:

鍵が生成されると下のようなメッセージが表示されます.

Your identification has been saved in /home/hoge/.ssh/id_ed25519.
Your public key has been saved in /home/hoge/.ssh/id_ed25519.pub
The key fingerprint is:
...
The key's randomart image is: 
+--[ED25519 256]--+ ... 
秘密鍵と公開鍵のペアが生成されたことを確認してみます.
$ ls -l ~/.ssh/ 
-rw------- 1 hoge hoge  399 6月 19 15:29 id_ed25519
-rw-r--r-- 1 hoge hoge   95 6月 19 15:29 id_ed25519.pub
-rw------- 1 hoge hoge 1342 6月 19 14:55 known_hosts

この時 id_ed25519 が秘密鍵,id_ed25519.pub が公開鍵となります.


[4.2] 公開鍵の配送

公開鍵認証を用いてリモートログインを行う場合, ローカルホストで生成した公開鍵がリモートホストの ~/.ssh/authorize_keys に書かれていなければなりません. このファイルは公開鍵を登録しておくためのものです. そのためローカルホストで作成した公開鍵をリモートホストへ送る必要があります.
絶対に秘密鍵を送ってはいけません!!

[4.2.1] 既に何かしらの方法でリモートログインできる場合

作成した公開鍵を [2.3] に出てきた sftp コマンドなどを用いてリモートホストに送ります. すでにパスワード認証で接続できていることが確認できている場合, 以下の手順で公開鍵を転送できます.

local$ sftp hero@192.168.16.1XX
hero@192.168.16.1XX's password: 
sftp> put /home/hoge/.ssh/id_ed25519.pub        
< 隣の計算機へ sftp で接続します. hero はリモートホストに作成したアカウントのアカウント名, XX は隣の情報実験機番号です. 
> リモートホストのアカウントのパスワードを入力してください. 
< 公開鍵 (/home/hoge/.ssh/id_ed25519.pub) を転送します. ただし hoge はローカルホストのアカウント名です. 
絶対に秘密鍵を送ってはいけません!!

sftp から抜けて ssh でリモートログインし,先程送信した公開鍵ファイル (id_ed25519.pub) の中身を リモートホストの ~/.ssh/authorized_key に書き込んでください.

local$ ssh hero@192.168.16.1XX
hero@192.168.16.1XX's password: 

remote$ cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
remote$ chmod 700 ~/.ssh
remote$ chmod 600 ~/.ssh/authorized_keys
remote$ ls -l ~/.ssh
-rw------- 1 hero hero  95 6月 19 15:38 authorized_keys
< リモートホストに ssh で接続する. hero はリモートホストのアカウント名, XX は隣の情報実験機番号 (2 桁).
> リモートホストのアカウントのパスワードを入力する. 

< 公開鍵の内容を ~/.ssh/authorized_keys に追記.
< 公開鍵認証で ssh 接続できるように, .ssh ディレクトリと authorized_keys のパーミッションを変更する. 



[4.2.2] リモートログインできない場合

リモートホストへログインできない場合は, リモートアクセスを使用せずにリモートホストに直接ログインをし, ローカルホスト側で作成した公開鍵 (id_ed25519.pub) を USB メモリ等の記憶媒体を使用してリモートホストに 送ることが可能です.
無事にリモートホスト側に公開鍵を送ることができたら,公開鍵 (id_ed25519.pub) の中身を ~/.ssh/authorized_key に書き込みます. ~/.ssh が存在しない場合は, mkdir コマンドで .ssh ディレクトリを作成してください.
今回の実技では, すでにパスワード認証を用いたリモートログインに成功しているはずなので, 以下のコマンドを実行する必要はありません.

remote$ cat id_ed25519.pub >> ~/.ssh/authorized_keys

これで公開鍵認証を用いたリモートログインをする準備が整いました.


[4.3] ssh を用いたリモートログイン (公開鍵認証)

ssh を用いてリモートログインしてみましょう.

リモートホストにログインしてみましょう.

local$ ssh hero@192.168.16.1XX

    
< hero にはリモートホスト上でのアカウント名, XX にはリモートホストの情報実験機番号 (2 桁) を記述. 
  ローカルホストとリモートホストでアカウント名が同じ場合は「hero@」の部分を省略できます.
	

パスフレーズを設定した方はここでパスフレーズを聞かれます. 今回は公開鍵を渡してあるためパスワードの要求はされません.

無事ログインできれば、リモートホストのプロンプトが返ってきます.
hero@johoXX$
      
< プロンプト上の XX に対応する数字が, 隣の情報実験機の番号になっているのが確認できます. 
      




<< 前ページへ      本日のスケジュールへ戻る >>

最終更新日: 2026/06/15 吉川 颯真 更新 Copyright © 2024 - 2026 inex