温馨提示×

Debian SFTP如何实现公钥认证

小樊
33
2025-11-30 05:22:35
栏目: 智能运维

在Debian系统上实现SFTP公钥认证,可以按照以下步骤进行:

1. 生成SSH密钥对

首先,在客户端生成SSH密钥对(如果还没有的话)。

ssh-keygen -t rsa -b 4096

按照提示操作,通常会生成两个文件:~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)。

2. 将公钥复制到服务器

将生成的公钥复制到服务器的~/.ssh/authorized_keys文件中。

方法一:使用ssh-copy-id命令

ssh-copy-id user@server_ip

方法二:手动复制

  1. 在客户端,查看公钥内容:
    cat ~/.ssh/id_rsa.pub
    
  2. 登录到服务器,编辑或创建~/.ssh/authorized_keys文件:
    ssh user@server_ip
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

3. 配置SSH服务器

确保服务器的SSH配置允许公钥认证。

编辑服务器上的/etc/ssh/sshd_config文件:

sudo nano /etc/ssh/sshd_config

确保以下配置项存在并设置为如下值:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

4. 重启SSH服务

保存并退出编辑器后,重启SSH服务以应用更改:

sudo systemctl restart sshd

5. 测试SFTP连接

现在,尝试使用SFTP连接到服务器:

sftp user@server_ip

如果一切配置正确,你应该能够使用私钥进行认证并成功连接。

6. 配置SFTP子系统(可选)

如果你希望限制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公钥认证了。

0