在CentOS上配置SFTP密鑰認證可以提供更安全的文件傳輸方式。以下是詳細的步驟:
首先,在客戶端機器上生成SSH密鑰對。如果你還沒有SSH密鑰對,可以使用以下命令生成:
ssh-keygen -t rsa -b 4096
按照提示操作,通常會生成兩個文件:id_rsa(私鑰)和id_rsa.pub(公鑰)。你可以選擇設置一個密碼短語來保護私鑰。
使用ssh-copy-id命令將公鑰復制到服務器的~/.ssh/authorized_keys文件中。如果你沒有ssh-copy-id命令,可以使用以下方法手動復制:
ssh-copy-id user@server_ip
如果ssh-copy-id不可用,可以手動復制公鑰:
cat ~/.ssh/id_rsa.pub | ssh user@server_ip 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'
確保服務器上的~/.ssh目錄和authorized_keys文件的權限正確:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
編輯服務器上的SSH配置文件/etc/ssh/sshd_config,確保以下配置項正確:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
你還可以添加其他安全配置,例如限制SFTP用戶的訪問:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
然后創建一個組sftpusers并將需要使用SFTP的用戶添加到該組:
groupadd sftpusers
usermod -aG sftpusers username
保存并關閉sshd_config文件后,重啟SSH服務以應用更改:
systemctl restart sshd
現在,你可以使用SFTP客戶端連接到服務器進行測試:
sftp username@server_ip
如果一切配置正確,你應該能夠使用密鑰認證登錄到服務器。
確保服務器的防火墻允許SSH連接(默認端口22):
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
如果服務器啟用了SELinux,可能需要調整SELinux策略以允許SFTP chroot jail:
setsebool -P ssh_sysadm_login on
setsebool -P ssh_keysign on
通過以上步驟,你應該能夠在CentOS上成功配置SFTP密鑰認證。