零配置,一條指令助你實現(xiàn)SSH免密登陸和安全加固
前言
對于新入手或重裝后的 VPS 配置密鑰登錄需要創(chuàng)建 ~/.ssh 目錄、把公鑰寫入到 ~/.ssh/authorized_keys、設置權限、禁用密碼登錄等操作,雖然都是很簡單的基礎操作,但過程麻煩且枯燥:
- mkdir -p ~/.ssh
- curl -fsSL https://github.com/P3TERX.keys >> ~/.ssh/authorized_keys
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/authorized_keys
- sudo sed -i "s@.*\(PasswordAuthentication \).*@\1no@" /etc/ssh/sshd_config
- sudo service sshd restart
SSH 密鑰一鍵配置腳本是一套用于簡化 SSH 密鑰配置過程的解決方案。使用它以上操作只需要一行命令:
- bash <(curl -fsSL git.io/key.sh) -g P3TERX -d
語法及選項說明
bash <(curl -fsSL git.io/key.sh) [選項...] <參數>
- -o - 覆蓋模式,必須寫在最前面才會生效
- -g - 從 GitHub 獲取公鑰,參數為 GitHub 用戶名
- -u - 從 URL 獲取公鑰,參數為 URL
- -l - 從本地文件獲取公鑰,參數為本地文件路徑
- -p - 修改 SSH 端口,參數為端口號
- -d - 禁用密碼登錄
使用方法
生成 SSH 密鑰對
如果沒有密鑰需要先生成,執(zhí)行以下命令后一路回車即可。
- ssh-keygen -t ecdsa -b 521
TIPS:
此方法適用于 Windows 10 (1803后)的 PowerShell 或 WSL,Linux 發(fā)行版和 macOS 自帶的終端,但不僅限于這些環(huán)境。
科普: 521 位的 ECDSA 密鑰比起 RSA 密鑰更安全且驗證速度更快。
操作完后會在 ~/.ssh 目錄中生兩個密鑰文件,id_ecdsa 為私鑰,id_ecdsa.pub 為公鑰。公鑰就是我們需要安裝在遠程主機上的。
科普:~符號代表用戶主目錄,俗稱家目錄。其路徑與當前登陸的用戶有關,在 Linux 中普通用戶家目錄的路徑是/home/用戶名,而 root 用戶是/root。Windows 10 中路徑是C:\Users\用戶名。在 macOS 中路徑是/Users/用戶名。
安裝公鑰
從 GitHub 獲取公鑰
在 GitHub 密鑰管理頁面 添加公鑰,比如我的用戶名是 P3TERX,那么在主機上輸入以下命令即可:
- bash <(curl -fsSL git.io/key.sh) -g P3TERX
從 URL 獲取公鑰
把公鑰上傳到網盤,通過網盤鏈接獲取公鑰:
- bash <(curl -fsSL git.io/key.sh) -u https://p3terx.com/key.pub
從本地文件獲取公鑰
通過 FTP 的方式把公鑰傳到 VPS 上,然后指定公鑰路徑:
- bash <(curl -fsSL git.io/key.sh) -f ~/key.pub
覆蓋模式
使用覆蓋模式(-o)將覆蓋 /.ssh/authorized_keys 文件,之前的密鑰會被完全替換掉,選項必須寫在最前面才會生效,比如:
- bash <(curl -fsSL git.io/key.sh) -o -g P3TERX
或者
- bash <(curl -fsSL git.io/key.sh) -og P3TERX
禁用密碼登錄
在確定使用密鑰能正常登錄后禁用密碼登錄:
- bash <(curl -fsSL git.io/key.sh) -d
修改 SSH 端口
把 SSH 端口修改為 2222:
- bash <(curl -fsSL git.io/key.sh) -p 2222
一鍵操作
安裝密鑰、修改端口、禁用密碼登錄一鍵操作:
- bash <(curl -fsSL git.io/key.sh) -og P3TERX -p 2222 -d