在Debian系統中,使用證書配置SFTP(SSH File Transfer Protocol)可以提供更安全的文件傳輸方式。以下是配置SFTP使用證書的步驟:
首先,確保你已經安裝了openssh-server
和openssh-client
。
sudo apt update
sudo apt install openssh-server openssh-client
你需要為SFTP用戶生成證書和私鑰??梢允褂?code>openssl工具來完成這一任務。
sudo openssl req -x509 -newkey rsa:4096 -keyout /etc/ssl/private/sftp-ca-key.pem -out /etc/ssl/certs/sftp-ca-cert.pem -days 3650 -nodes
sudo openssl req -newkey rsa:4096 -keyout /etc/ssl/private/sftp-server-key.pem -out /etc/ssl/certs/sftp-server-cert.pem -days 3650 -nodes -subj "/CN=sftp.example.com"
sudo openssl req -newkey rsa:4096 -keyout /etc/ssl/private/sftp-client-key.pem -out /etc/ssl/certs/sftp-client-cert.pem -days 3650 -nodes -subj "/CN=client.example.com"
編輯/etc/ssh/sshd_config
文件,添加或修改以下配置:
# 啟用證書認證
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 指定CA證書
TrustedUserCAKeys /etc/ssl/certs/sftp-ca-cert.pem
# 限制SFTP用戶只能使用SFTP
Subsystem sftp internal-sftp
# 創建SFTP用戶的chroot環境(可選)
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
創建一個專門用于SFTP的用戶組,并將需要使用SFTP的用戶添加到該組中。
sudo groupadd sftpusers
sudo useradd -m -G sftpusers sftpuser
sudo passwd sftpuser
將客戶端的公鑰添加到用戶的~/.ssh/authorized_keys
文件中。
echo "cert-authority=/etc/ssl/certs/sftp-ca-cert.pem" >> ~/.ssh/config
echo "identityfile=/etc/ssl/private/sftp-client-key.pem" >> ~/.ssh/config
echo "certificate=/etc/ssl/certs/sftp-client-cert.pem" >> ~/.ssh/config
echo "host sftp.example.com" >> ~/.ssh/config
echo "port 22" >> ~/.ssh/config
echo "user sftpuser" >> ~/.ssh/config
最后,重啟SSH服務以應用更改。
sudo systemctl restart sshd
使用客戶端證書連接到SFTP服務器。
sftp -o "IdentityFile /etc/ssl/private/sftp-client-key.pem" -o "Certificate /etc/ssl/certs/sftp-client-cert.pem" sftpuser@sftp.example.com
通過以上步驟,你就可以在Debian系統中配置SFTP使用證書進行安全認證了。