在Debian系统上配置SFTP以支持公钥认证,可以按照以下步骤进行:
首先,确保你已经安装了openssh-server。如果没有安装,可以使用以下命令进行安装:
sudo apt update
sudo apt install openssh-server
编辑SSH服务器的配置文件/etc/ssh/sshd_config,以启用公钥认证。
sudo nano /etc/ssh/sshd_config
在文件中找到并修改以下行:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
确保这些行没有被注释掉(即没有以#开头)。
如果你还没有用户,可以使用以下命令创建一个新用户:
sudo adduser username
然后,切换到该用户并创建.ssh目录:
sudo su - username
mkdir -p ~/.ssh
chmod 700 ~/.ssh
在客户端机器上生成SSH密钥对(如果还没有的话)。你可以使用以下命令:
ssh-keygen -t rsa -b 4096
按照提示操作,通常会生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。
将生成的公钥复制到服务器用户的~/.ssh/authorized_keys文件中。你可以使用以下命令:
ssh-copy-id username@server_ip
系统会提示你输入服务器用户的密码。成功后,公钥将被添加到服务器的~/.ssh/authorized_keys文件中。
为了使配置生效,需要重启SSH服务:
sudo systemctl restart sshd
现在,你应该能够使用SFTP进行连接,并且只需要提供私钥即可认证。例如:
sftp username@server_ip
系统会提示你输入私钥的密码(如果设置了的话)。成功后,你将进入SFTP命令行界面。
如果你启用了防火墙,确保允许SSH连接:
sudo ufw allow ssh
或者使用iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
完成以上步骤后,你的Debian系统应该已经成功配置了SFTP以支持公钥认证。