在Debian系统中,使用证书配置SFTP(SSH File Transfer Protocol)可以提供更安全的文件传输方式。以下是配置SFTP使用证书的步骤:
首先,确保你已经安装了openssh-server
和openssh-client
。
sudo apt update
sudo apt install openssh-server openssh-client
你需要为SFTP用户生成证书和私钥。可以使用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使用证书进行安全认证了。