在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使用证书进行安全认证了。