メインコンテンツへスキップ
  1. ノート/
  2. ツールとデプロイ/

SSHの簡単な設定

·890 文字·2 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml

1. クライアントでSSH鍵を生成する
#

ローカルのノートパソコンや開発マシンで、次を実行します。

ssh-keygen -t ed25519 -C "your_email@example.com"

既存の環境でRSA鍵が必要な場合は、次の形式も使えます。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

通常、次の2つのファイルが作成されます。

~/.ssh/id_ed25519      秘密鍵
~/.ssh/id_ed25519.pub  公開鍵

秘密鍵は他人へ渡さず、公開鍵だけをサーバーへ登録します。複数用途を分けたい場合は、-f ~/.ssh/id_ed25519_serverのように保存先を指定します。

2. サーバーへ公開鍵を登録する
#

サーバーのIPアドレスを192.168.1.108、ユーザー名をice345とします。

方法A:ssh-copy-id
#

ssh-copy-id -i ~/.ssh/id_ed25519.pub ice345@192.168.1.108

一度だけサーバーのパスワードを入力すると、公開鍵がサーバーの~/.ssh/authorized_keysへ追加されます。

方法B:手動で登録する
#

ssh-copy-idがない場合は、次の手順を使います。

cat ~/.ssh/id_ed25519.pub
ssh ice345@192.168.1.108
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

catで表示した公開鍵を、サーバー側のauthorized_keysへ1行のまま貼り付けます。

3. 鍵認証を確認する
#

クライアントから接続します。

ssh -i ~/.ssh/id_ed25519 ice345@192.168.1.108

鍵のパスフレーズを設定していれば、接続時にパスフレーズを求められることがあります。これはサーバーアカウントのパスワードとは別のものです。

4. sshdを設定する
#

サーバー側で/etc/ssh/sshd_configを確認します。

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin no

公開鍵で接続できることを確認してから、パスワード認証を無効化します。

PasswordAuthentication no

設定を反映する前に構文を検査します。

sudo sshd -t
sudo systemctl restart sshd

ディストリビューションによってサービス名がsshの場合があります。

5. 権限とファイアウォール
#

パス推奨権限
~/.ssh/700
~/.ssh/authorized_keys600
秘密鍵600

ファイアウォールではSSHポートを必要なネットワークからだけ許可します。ポート番号を変更しても、公開鍵認証、強いパスワード、Fail2banなどの対策の代わりにはなりません。

まとめ
#

  1. クライアントで秘密鍵と公開鍵を生成する。
  2. 公開鍵だけをauthorized_keysへ登録する。
  3. 公開鍵認証で接続できることを確認する。
  4. sshd -tで検査してから、必要に応じてパスワード認証を無効化する。

评论