はじめに
公開鍵認証でログインしたいときにやることをまとめました。
1. 新規ユーザを作成する
Linux側で行います。
sudo useradd -s /bin/bash -m username
sudo passwd userpass
sudoを許可する場合は
sudo usermod -aG sudo username
2. 公開鍵を生成する
接続したいクライアントが行います。
ed25519方式で鍵を作成する場合はこちら
ssh-keygen -t ed25519
rsa方式で鍵を作成する場合はこちら
ssh-keygen -t rsa -b 4096
ssh-keygen -f [ファイルパス]
sshログインについて
基本形
注意
.sshフォルダに鍵がある場合はそれを使用してログインします。
無い場合はパスワード認証になります。
ssh -p [ポート番号] [ユーザ名@IPアドレス]
公開鍵暗号方式を使う場合
ssh -p [ポート番号] -i [秘密鍵パス] [ユーザ名@IPアドレス]
3. SCPで公開鍵を送信する
接続したいクライアントが行います。
基本形(パスワード認証)
scp [送信したいファイルパス] [保存先パス(ユーザ名@IPアドレス:ディレクトリ)]
鍵認証の場合
-i オプションを使う
scp -i [鍵パス] ...
ポート番号を指定して送信する
-P オプションを使います
scp -P [ポート番号] ...
4. SSHフォルダに鍵を置く
Linux側で行います。
送った公開鍵をauthorized_keysにする
mv [鍵パス] .ssh/authorized_keys
パーミッション変更
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
5. SSH configを設定する
Linux側で行います。
rootになって
su root
sshdのバックアップをしておく
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
バックアップしたらviとかでconfigを変更
許可するアルゴリズムを選択
rsaの場合
PubkeyAcceptedAlgorithms=+ssh-rsa
ed25519の場合
PubkeyAcceptedAlgorithms=+ssh-ed25519
パスワード認証を無効化
- #PasswordAuthentication yes
+ PasswordAuthentication no
viを保存して閉じる
所有者を変更する
うまくいかない人は鍵の所有者が正しく設定されていない場合があります。
たとえば、rootユーザになっているなど
.sshやauthorized_keysの所有権はユーザにないと読み込めずに失敗してしまうので権限を変更します。
chown [ユーザ名]:[ユーザ名] .ssh/authorized_keys
sshdのリスタート
systemctl reload sshd
参考記事