1. 生成SSH密鑰對(客戶端操作)
在客戶端機器上生成RSA密鑰對(推薦4096位強度),用于身份認證。執行以下命令:
ssh-keygen -t rsa -b 4096
按提示操作(可直接按回車鍵使用默認路徑~/.ssh/id_rsa
,私鑰不建議設置密碼短語以簡化流程),生成后會得到兩個文件:
id_rsa
:私鑰(需嚴格保密,權限設為600);id_rsa.pub
:公鑰(需上傳至服務器)。2. 將公鑰復制到Debian SFTP服務器
將客戶端的公鑰id_rsa.pub
內容添加到服務器目標用戶的~/.ssh/authorized_keys
文件中,實現免密認證。常用兩種方法:
ssh-copy-id
命令,自動完成公鑰傳輸和權限設置:ssh-copy-id username@server_ip
~/.ssh/authorized_keys
中。ssh-copy-id
,可手動操作:cat ~/.ssh/id_rsa.pub
,復制全部輸出;ssh username@server_ip
;.ssh
目錄并設置權限:mkdir -p ~/.ssh && chmod 700 ~/.ssh
;authorized_keys
:echo "粘貼的公鑰內容" >> ~/.ssh/authorized_keys
;authorized_keys
文件權限:chmod 600 ~/.ssh/authorized_keys
。3. 配置SSH服務器(Debian系統)
編輯SSH服務的主配置文件/etc/ssh/sshd_config
,啟用密鑰認證并優化SFTP設置:
sudo nano /etc/ssh/sshd_config
找到并修改以下關鍵參數(取消注釋或新增):
# 啟用公鑰認證(必須)
PubkeyAuthentication yes
# 指定authorized_keys文件路徑(默認即可)
AuthorizedKeysFile .ssh/authorized_keys
# 可選:禁用密碼認證(僅允許密鑰認證,提升安全性)
PasswordAuthentication no
# 可選:禁用PAM認證(若不需要額外認證模塊)
ChallengeResponseAuthentication no
# 確保SFTP子系統啟用(默認路徑)
Subsystem sftp /usr/lib/openssh/sftp-server
若需限制SFTP用戶只能訪問自己的家目錄(chroot jail),可添加以下配置(匹配特定用戶組,如sftpusers
):
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
保存并退出編輯器(Ctrl+O
→Enter
→Ctrl+X
)。
4. 重啟SSH服務
使配置變更生效,執行以下命令重啟SSH服務:
sudo systemctl restart sshd
可通過sudo systemctl status sshd
確認服務狀態(顯示“active (running)”即為正常)。
5. 測試SFTP密鑰認證連接
在客戶端使用私鑰連接服務器,驗證配置是否成功:
ssh -i ~/.ssh/id_rsa username@server_ip
或直接使用sftp
命令:
sftp -i ~/.ssh/id_rsa username@server_ip
若配置正確,將無需輸入密碼直接登錄服務器(或進入SFTP命令行界面)。
6. 安全加固(可選但推薦)
id_rsa
的權限必須為600,防止未授權訪問:chmod 600 ~/.ssh/id_rsa
/etc/ssh/sshd_config
中添加AllowUsers username@your_client_ip
,僅允許指定IP連接。sudo tail -f /var/log/auth.log
實時查看SSH登錄記錄,及時發現異常登錄行為。