禁用 Linux 的密碼登入改用 ssh 憑證連線
緣由 :
用密碼登入代表有可能會有洩漏或被暴力破解等等的隱憂,所以可以改用非對稱式加密的 ssh 來保證安全,也可以幫助懶人不用每次都要打密碼。
作法 :
1. 本機產生 ssh 金鑰對:
如果你是 Unix/Linux 或 macOS,可以直接使用以下指令:
1 | ssh-keygen -t rsa -b 4096 |
如果你是 Ubuntu 或 Debian 又缺少這個工具,則需要先用指令安裝套件:
1 | sudo apt-get update |
如果成功會在你的帳戶家目錄下產生 .ssh
目錄,裡面有私鑰 id_rsa
和公鑰 id_rsa.pub
,請記住私鑰絕對不要外洩。
2. 推送金鑰到你的機器上:
1 | ssh-copy-id <username>@<remote_ip> |
如果成功則會在你的機器的該帳號家目錄下產生 .ssh/authorized_keys
。
或你也可以手動創建該目錄檔案並貼入公鑰 id_rsa.pub
的內容。
成功後記得確保 .ssh 和 authorized_keys 都是 755
權限。
3. 修改你的機器設定:
先打開設定檔案:
1 | sudo vim /etc/ssh/ssfd_config |
在裡面找到以下設定並修改其值:
1 | port 22 # ssh 監聽端口,你可以改成自己喜歡的,但要注意防火墻不能擋。 |
修改完設定後要重啟 ssh 服務:
1 | sudo systemctl restart sshd |
通常這些做完就可以免密碼用 ssh 連線了。
意外 :
如果你的機器是用雲端伺服器代理商的話,很有可能上面步驟都做完後還是有問題。
以 Vultr
為例,發現登入時他還是會要你輸入密碼。
使用以下指令檢查:
1 | sudo sshd -T |grep pass |
發現 passwordauthentication
還是 yes
,代表系統並沒有吃到剛剛的設定。
原因是 Vultr 另外有 sshd_config.d/50-cloud-init.conf
,裡面就有 PubkeyAuthentication yes
的內容,
而系統在執行時會先讀取 ssfd_config
後才讀取 50-cloud-init.conf
,就導致你的設定被覆蓋掉了,解決方法就是直接修改 50-cloud-init.conf
再重啟服務。
如果您喜歡我的文章,歡迎幫我在下面按5下讚!感謝您的鼓勵和支持!
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment