暗号化通信・認証とSSH

共有鍵暗号

公開鍵認証基盤

SSHを公開鍵で利用する

以下の手順で鍵を作り、公開鍵でログインしてみる。

simeの場合は以下の ssh-keygen や ssh の変わりに各々 /usr/koeki/openssh/bin/ssh-keygen, /usr/koeki/openssh/bin/ssh を起動する。

まず、既に鍵を作成済みでないか確認する。

ls ~/.ssh

ファイル一覧に id_rsa と id_rsa.pub がある場合は作成済みであるので 以下の手順は行なわない。

: SSH接続クライアント側
: 鍵を作る
ssh-keygen -t rsa
Enter file in which to save the key (/home/USER/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/USER/.ssh/id_rsa
Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:dX1ZI3qFnieR0DSGyd+xbd14ORQ08T9BZXVPY4O5NDU USER@HOST
The key's randomart image is:
+---[RSA 2048]----+
|          ..*=BE%|
|           +o@*=%|
|          ..=.O+@|
|         . ..*.BO|
|        S     o+o|
|                .|
|                 |
|                 |
|                 |
+----[SHA256]-----+

続いて、作成できた公開鍵を確認し、ログイン可能な鍵として ~/.ssh/authorized_keys に登録する。

cat ~/.ssh/id_rsa.pub
ssh-rsa ABAAACakljdalkj8kljlk32ljklajfs.....
.................lkjasdXYZ USER@HOST

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod og-r ~/.ssh/authorized_keys

authorized_keys ファイルへの公開鍵登録は、実際にはログイン先の サーバで行なう必要があるが、本学環境の場合はログイン先もNFSで 同じホームディレクトリを共有しているので接続元のホストでの作業でよい。

続けてログインする。

ssh roy
Enter passphrase for key '/home/USER/.ssh/id_rsa': 

普段のパスワードではなく、ssh-keygen で入力したパスフレーズを入れる。

以上で公開鍵でのSSHログインが可能となる。まとめると、以下の手順となる。

  1. ssh-keygen で鍵を作る
  2. ログイン先ホストの ~/.ssh/authorized_keys に公開鍵(pub)を 追加する。

ログイン元には ~/.ssh/id_rsa ファイル、ログイン先には ~/.ssh/authorized_keys ファイル内への id_rsa.pub の内容登録が必要である。

SSH秘密鍵の保持エージェント

ssh-agent を利用してSSH鍵のパスフレーズを記憶させておくと、 終了時までパスフレーズなしでログインできる。LinuxやMacでは ログイン時に自動的に ssh-agent を起動してくれている場合が多い。 そうでなければ自力で起動する。起動方法多様だがログイン後に起動するなら 以下がお勧め。

ssh-agent zsh		# または ssh-agent $SHELL
ssh-add
emacs &

あとから起動したEmacsは、ssh 接続でパスフレーズなしで編集できるようになるので先に起動してある Emacs は終了する。

yuuji@koeki-u.ac.jp