社内SEの話

日々起きたことの記録用

WindowsとLinuxでSSHを公開鍵認証で接続する

WindowsLinuxSSHを公開鍵認証で接続する方法を解説

パスワード認証ではなく、公開鍵認証でセキュアに接続する方法を解説します。

難しくないので、手順を覚えたあとにでも理屈も同時に覚えておいたほうがいいです。

環境

(サーバ)Fedora40

(クライアント)Windows 11 Professional

Windows(クライアント)で公開・秘密鍵の作成

フォルダの作成

.sshフォルダがないと、ユーザーフォルダの直下にファイルが生成されるので、作成します

mkdir .ssh  

SSH Public-key cryptography

鍵作成

ssh-keygen  

SSH Public-key cryptography

秘密鍵と公開鍵が生成されました

鍵名、パスフレーズはに未入力で作成しました

今回は公開鍵を渡さないので、パスフレーズは未入力ですが、外部に渡す場合はパスフレーズは入力してください。

今回の鍵名はデフォルトで作成されたid_ed25519になります。

id_ed25519が秘密鍵、id_ed25519.pubが公開鍵になります。

指定すれば指定のファイル名が2つ生成されます。

SSH Public-key cryptography

Linux(サーバ)で公開鍵の登録

パスワード認証で一度接続します

ssh ユーザ名@サーバ名  

SSH Public-key cryptography

.sshフォルダの確認

ls -la  

SSH Public-key cryptography

なければ作成し移動する

mkdir .ssh  

SSH Public-key cryptography

cd .ssh  

SSH Public-key cryptography

authorized_keysを作成

vi authorized_keys  

SSH Public-key cryptography

Windowsで作成された.pubファイルをそのままコピペします

SSH Public-key cryptography

SSH Public-key cryptography

保存します

SSH再起動

sudo systemctl restart sshd  

SSH Public-key cryptography

ここでSSHは一度切断します。

公開鍵接続

SSH Public-key cryptography

パスワードなしで接続できました。

パスワード認証を禁止にする

パスワード認証はセキュリティリスクがあるので、インターネットと接続しているサーバであれば必須になります。個人利用の場合は禁止にしなくても使えますが、公開鍵認証での検証もしたいので、いつも禁止にしています。

あと毎回パスワードを入力するのがめんどくさいです。

sudo vi /etc/ssh/sshd_config  
PasswordAuthentication no  

SSH Public-key cryptography

ssh再起動

sudo systemctl restart sshd