0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Linux] ssh-agentを用いたssh接続

Last updated at Posted at 2025-04-10

この記事について

LPIC-102のセキュリティ分野における、sshの公開鍵認証の設定についてまとめる。

設定手順

公開鍵認証の場合、通常であれば認証のたびに秘密鍵のパスワード入力を求められる。ssh-agentによる認証では、認証におけるパスワード入力のプロセスをカットできる。

認証方式を公開鍵認証に設定(サーバー)

  1. /etc/ssh/sshd_config をエディタで開く
[root@localhost ~]# vi /etc/ssh/sshd_config

2.以下行のコメントアウトを外し、値を「yes」にする

PubkeyAuthentication yes

3.sshdの再起動を行う

 [root@localhost ~]# systemctl restart sshd

鍵ペアの作成(クライアント)

  1. ssh-keygenコマンドを実行し、公開鍵と秘密鍵のペアを作成する
   [root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:oiLCbH8bddiR+dOsgmmwT2ohL0YpbQpMWX7P1y6oVDs root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|   .      o      |
|  +      +       |
| o . .  o o o    |
|o . o.++So.o o   |
|+o * o=+=. .o    |
|++* ++.Eo...     |
|oo.+.+*.....     |
|  ..++o.  .      |
+----[SHA256]-----+

ssh-agentの設定に必要になるため、必ず任意のパスワードを設定する

2.ホームディレクトリの.ssh/配下に公開鍵と秘密鍵のペアが作成されたことを確認する

[root@localhost ~]# ll ~/.ssh/
合計 8
-rw------- 1 root root 2655  4月 10 15:46 id_rsa
-rw-r--r-- 1 root root  580  4月 10 15:46 id_rsa.pub

サーバーに公開鍵を配布

  1. どうにかして、クライアント側で作成した公開鍵を、サーバーに配布する。
    メディア経由による配布が理想のよう。

注意しなければならないのは、他方へ鍵を渡す際の方法です。 暗号化されていないネットワーク上をFTP やメールなどで渡すのは最も危険であり、暗号化されているSCP やSFTP の利用も望ましいものではありません。 鍵を渡す際には、ネットワークを一切経由しないメディア経由が最も安全です。 但し、鍵を渡した後にメディア(FD など)を紛失したならば意味はありませんので、メディア内の鍵を厳重に保管するなどの対策が必要です。
参考:鍵配布の注意点

2.どうにかして、サーバーに配布した公開鍵を~/.ssh/authorized_keysとしてコピーする

ssh-agentの設定(クライアント)

  1. ssh-agentを起動する
ssh-agent bash

ssh-agentコマンドをそのまま実行すると、サービスに必要な環境変数を表示する。引数にシェルを指定することで、子シェルのスコープ内でのみ必要な環境変数が定義される。子シェルが終了すると、ssh-agentは停止し環境変数の設定も消える。

2.ssh-agentの環境変数を確認する

 [root@localhost ~]# ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-2Eefr3kjLdQ4/agent.5739; export SSH_AUTH_SOCK;
SSH_AGENT_PID=5740; export SSH_AGENT_PID;
echo Agent pid 5740;

SSH_AUTH_SOCK:ssh-agentとssh-add&sshのプロセス間インターフェースが定義されている

SSH_AGENT_PID:ssh-agentが起動してる子シェルのプロセスID

3.ssh-addコマンドでssh-agentに秘密鍵の登録を行う
鍵ペアをデフォルトパスで指定しているので、オプションは必要ない

[root@localhost .ssh]# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (root@localhost.localdomain)

4.登録した秘密鍵を確認する

 [root@localhost .ssh]# ssh-add -l
3072 SHA256:oiLCbH8bddiR+dOsgmmwT2ohL0YpbQpMWX7P1y6oVDs root@localhost.localdomain (RSA)

ssh接続

  1. sshコマンドでクライアントからサーバーにssh接続を行う
    接続をするか否か問われるが、yesで問題ない
[root@localhost .ssh]# ssh root@10.2.149.12 cat ~/.ssh/authorized_keys
The authenticity of host '10.2.149.12 (10.2.149.12)' can't be established.
ECDSA key fingerprint is SHA256:HdTXkO5LG3T53IYrNLpWe5oXk2gSJDuFyyTrGMstKTc.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.2.149.12' (ECDSA) to the list of known hosts.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCtW5Ucl1BjAi3HGgs+IJr/aq4pCDARQxN/54VKeEwL1NJaGH6Q06RKVnj+8LvfYyKeXpKjTDtX7IWUZmQ3m9rCLwcqGdpAPFQoUgef3OUdEplnAxL3Gp1zQrhkRC7bfBS3ytsDHmD4FeZSyvJq3NGTOtTHSDPsLILZM2WY3XPHNa1a8m8nGknmqMVT2eOY2dtqlQuZQzfynNml45fQh0YwVTiNTjc5Yu+WZBSUHcTbFTbBhyTklX/BKVHdV/1/+F1PRjMLyQOI5KAM1c39dQP6NOPHKWvCaNANi9m2Dttdtl9s6ctjaQuczQX8yofrFXtsrisEVfX6Zm7id6zfPmbt9gZdO4KiwEMlFMq32ZURDoCbShoHoVlRdIJdpBNoYN1BhKKPAHCgMjeFXnGFfcdaNXlegYbajvJ0jMbxnxytUUEY39kYFcPSCS0mqF11nGeL7+1XIz99F+nzGLLjPrHBqwkq6BTRKlOHD/wgz2+x2Gd/bkN72U1CQHdADvdnLrk= root@localhost.localdomain

ssh接続時、sshサーバーはクライアントに自身の公開鍵を送信する。クライアントは、受け取った公開鍵と~/.ssh/known_hostsファイルに格納されているsshサーバーの公開鍵を比べることで、正しいホストかどうかを検証する。今回は初めての接続であり、~/.ssh/known_hostsファイルに接続先sshサーバーの公開鍵が格納されていなかったことが原因でwarが表示されている。

参考:当エラーについて

2.再接続してみる
ssh-agentにより、秘密鍵のパスフレーズを入力せずにログインができた、以上。

 [root@localhost .ssh]# ssh root@10.2.149.12
Last login: Thu Apr 10 15:04:43 2025 from 10.0.15.101
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?