sshの設定

2026.02.24 Debian trixie


(1) クライアント側(今回はホスト側)で公開鍵ペアを作成する

(すでに作ってあるときは、(2)へ)

鍵を作るときのパスワードはサーバーのパスワードとは別物である。
$  ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hogehoge/.ssh/id_rsa):   このままenter
Enter passphrase (empty for no passphrase):                         パスワードを入れる
Enter same passphrase again:                                        再度パスワードを入れる
Your identification has been saved in /home/hogehoge/.ssh/id_rsa.
Your public key has been saved in /home/hogehoge/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:DXkvga6+uGv9L1dUdRiNEJcLezFVedhNVMhKsB+vEgU hogehoge@akagera
The key's randomart image is:
+---[RSA 4096]----+
|     E.s+o# &    |
|         o co.@.*|
|   +    + +.o= +.|
|    <  . + =+oo  |
| a    S +.o..    |
|   .   A d o..   |
|     ..   .q.    |
|   .o @ . ..     |
|   .+ooo.+.      |
+----[SHA256]-----+
~.ssh/下に秘密鍵id_rsaと公開鍵id_rsa.pubができる

(2)クライアント側から公開鍵をサーバーに送信する

$ ssh-copy-id  -i .ssh/id_rsa.pub  hogehoge@ipアドレス
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host 'raspberrypi.local (192.168.3.30)' can't be established.
ECDSA key fingerprint is SHA256:6LtS3P30HdhynlZJZiPUvD11DTRS+X/oMKt4ADmr4vI.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
hogehoge@raspberrypi.local's password:   こ こは鍵のパスワードではなくサーバーログインのパスワード

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hogehoge@ipアドレス"
and check to make sure that only the key(s) you wanted were added.

サーバーにログインしてみる
$ ssh hogehoge@ipアドレス
Enter passphrase for key '/home/hogehoge/.ssh/id_rsa':秘密鍵のパスワードを入れる  

(3)sshのセキュリティ強化

 ・rootのログインの無効化と・パスワード認証の無効化をする。
 (これをやっておかないと、自宅サーバーは経験上数日から1ヶ月程度で陥落する)
  しかし(1)の作業の前にこれをやると、パソコン側から公開鍵をサーバーへ送信できなくなる。
 
  /etc/ssh/sshd_configの以下2箇所を変更
#PermitRootLogin prohibit-password   変更前
PermitRootLogin no          変更後


#PasswordAuthentication yes  変更前
PasswordAuthentication no   変更後


変更後、opensshを再起動して設定を反映させる
$ sudo systemctl restart ssh