在CentOS上配置SFTP證書認證可以增強系統的安全性。以下是一個詳細的步驟指南,幫助你在CentOS上配置SFTP證書認證:
首先,確保你的系統已經安裝了OpenSSH服務器和客戶端。
sudo yum install openssh-server openssh-clients
創建一個CA(證書頒發機構)來簽發用戶證書。
sudo openssl genrsa -out ca.key 4096
sudo openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=YourCAName"
為每個用戶生成證書和私鑰。
sudo openssl genrsa -out user.key 2048
sudo openssl req -new -key user.key -out user.csr -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=username"
sudo openssl x509 -req -in user.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out user.crt -days 500 -sha256
編輯SSH服務器配置文件 /etc/ssh/sshd_config
。
sudo vi /etc/ssh/sshd_config
添加或修改以下配置:
# 啟用證書認證
PubkeyAuthentication yes
AuthorizedKeysCommand /usr/local/bin/ssh-authorizedkeys
AuthorizedKeysCommandUser nobody
# 禁用密碼認證(可選)
PasswordAuthentication no
# 指定證書認證的路徑
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
創建一個專門用于SFTP的用戶組,并將用戶添加到該組。
sudo groupadd sftpusers
sudo usermod -aG sftpusers username
創建一個目錄來存儲用戶的授權密鑰,并設置適當的權限。
sudo mkdir /home/username/.ssh
sudo chown username:username /home/username/.ssh
sudo chmod 700 /home/username/.ssh
將用戶的公鑰(user.crt
)添加到 ~/.ssh/authorized_keys
文件中。
sudo echo "certificate user.crt" >> /home/username/.ssh/authorized_keys
sudo chmod 600 /home/username/.ssh/authorized_keys
創建一個腳本來獲取用戶的授權密鑰。
sudo vi /usr/local/bin/ssh-authorizedkeys
添加以下內容:
#!/bin/bash
USER=$1
openssl x509 -noout -subject -in /home/$USER/.ssh/user.crt | awk -F'/' '{print $3}' | tr -d '\n'
賦予腳本執行權限:
sudo chmod +x /usr/local/bin/ssh-authorizedkeys
重啟SSH服務以應用配置更改。
sudo systemctl restart sshd
使用SFTP客戶端連接到服務器,驗證證書認證是否正常工作。
sftp -o HostKeyAlias=username username@your_server_ip
通過以上步驟,你應該能夠在CentOS上成功配置SFTP證書認證。確保所有步驟都正確執行,并且防火墻允許SSH連接。