在Debian系统上实现SFTP公钥认证,可以按照以下步骤进行:
首先,在客户端生成SSH密钥对(如果还没有的话)。
ssh-keygen -t rsa -b 4096
按照提示操作,通常会生成两个文件:~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)。
将生成的公钥复制到服务器的~/.ssh/authorized_keys文件中。
ssh-copy-id命令ssh-copy-id user@server_ip
cat ~/.ssh/id_rsa.pub
~/.ssh/authorized_keys文件:ssh user@server_ip
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
确保服务器的SSH配置允许公钥认证。
编辑服务器上的/etc/ssh/sshd_config文件:
sudo nano /etc/ssh/sshd_config
确保以下配置项存在并设置为如下值:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
保存并退出编辑器后,重启SSH服务以应用更改:
sudo systemctl restart sshd
现在,尝试使用SFTP连接到服务器:
sftp user@server_ip
如果一切配置正确,你应该能够使用私钥进行认证并成功连接。
如果你希望限制SFTP用户的访问权限,可以配置SFTP子系统。
编辑/etc/ssh/sshd_config文件,添加或修改以下内容:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
然后创建一个用户组sftpusers并将需要限制的用户添加到该组:
sudo groupadd sftpusers
sudo usermod -aG sftpusers username
最后,重启SSH服务:
sudo systemctl restart sshd
这样,属于sftpusers组的用户将只能使用SFTP,并且会被限制在其主目录中。
通过以上步骤,你就可以在Debian系统上实现SFTP公钥认证了。