SSH 安全性設定

由於 SSH 連線經過加密, 所以連接到 Unix Like 伺服器一般會用 SSH, 以下是一些關於 SSH 伺服器的安全設定:

SSH 伺服器的設定檔是 /etc/ssh/sshd_config,開啟並修改以下內容:

1. SSH 預設埠號是 22,將它改成其他的埠號,例如我改成 22022, 找到:

Port 22

換成:

Port 22022

2. 將 root 禁止登入, 要用 root 權限時, 要先用其他帳號登入, 再用 su 指令切換到 root, 或者用 sudo。

把 PermitRootlogin 設成 no:

PermitRootlogin no

3. 開啟用作管理伺服器的帳號, 只准許該帳號或群組登入 SSH, 其他帳號不可以登入, 以下是准許 my_name 用戶及 my_group 群組登入:

AllowUsers my_name
AllowGroups my_group

4. 如果帳號是空密碼, 禁止登入:

PermitEmptyPasswords no

5. SSH 有兩種通訊協定版本, 只開啟 Protocol 2 版本:

Protocol 2


6. 使用金鑰登入, 設定很容易, 而且儲存了 private key 在工作站, 不用每次都輸入密碼。先要在工作站設定, 在 Linux 設定 public key 及 private key 可以用以下指令:

$ ssh-keygen -t rsa -b 4096

這時會建立兩個檔案作為 private key 及 public key:

~/.ssh/id_rsa -> private key
~/.ssh/id_rsa.pub -> public key

然後將 id_rsa.pub (public key) 上載到伺服器, 例如伺服器在 192.168.1.100:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

這個指令會將 public key 儲存到伺服器 ~/.ssh/authorized_keys/ 內。

然後回到伺服器端, 開啟 SSH 設定檔 /etc/ssh/sshd_config, 將以下一行的注解取消, 即改成:

AuthorizedKeysFile %h/.ssh/authorized_keys

最後儲存檔案,並重新啟動 SSH 伺服器:

# systemctl restart sshd


Leave a Reply