公開鍵認証を用いたリモートログインの手法もあります. リモートログインにパスワードを使用しないため, パスワードなどの機密情報がネットワークに送信されずパスワード推測攻撃に強いということや, リモートログイン時のパスワード入力の手間が省ける利点があります. しかし, 生成された秘密鍵の取り扱いには注意が必要です. 生成した秘密鍵を誤って外に漏らさないように気を付けましょう.
ローカルホストにて以下のコマンドで公開鍵を作成します.
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 が公開鍵となります.
公開鍵認証を用いてリモートログインを行う場合, ローカルホストで生成した公開鍵がリモートホストの ~/.ssh/authorize_keys に書かれていなければなりません.
このファイルは公開鍵を登録しておくためのものです.
そのためローカルホストで作成した公開鍵をリモートホストへ送る必要があります.
絶対に秘密鍵を送ってはいけません!!
作成した公開鍵を [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 のパーミッションを変更する. |
リモートホストへログインできない場合は, リモートアクセスを使用せずにリモートホストに直接ログインをし,
ローカルホスト側で作成した公開鍵 (id_ed25519.pub) を USB メモリ等の記憶媒体を使用してリモートホストに
送ることが可能です.
無事にリモートホスト側に公開鍵を送ることができたら,公開鍵 (id_ed25519.pub) の中身を ~/.ssh/authorized_key に書き込みます.
~/.ssh が存在しない場合は, mkdir コマンドで .ssh ディレクトリを作成してください.
今回の実技では, すでにパスワード認証を用いたリモートログインに成功しているはずなので, 以下のコマンドを実行する必要はありません.
remote$ cat id_ed25519.pub >> ~/.ssh/authorized_keys |
これで公開鍵認証を用いたリモートログインをする準備が整いました.
ssh を用いてリモートログインしてみましょう.
リモートホストにログインしてみましょう.
local$ ssh hero@192.168.16.1XX
|
< hero にはリモートホスト上でのアカウント名, XX にはリモートホストの情報実験機番号 (2 桁) を記述. ローカルホストとリモートホストでアカウント名が同じ場合は「hero@」の部分を省略できます. |
パスフレーズを設定した方はここでパスフレーズを聞かれます. 今回は公開鍵を渡してあるためパスワードの要求はされません.
無事ログインできれば、リモートホストのプロンプトが返ってきます.
hero@johoXX$
|
< プロンプト上の XX に対応する数字が, 隣の情報実験機の番号になっているのが確認できます.
|
| 最終更新日: 2026/06/15 吉川 颯真 更新 | Copyright © 2024 - 2026 inex |