温馨提示×

debian sftp密钥怎么配

小樊
45
2026-10-06 13:47:41
栏目: 智能运维

下面以 Debian 为例,说明 SFTP 使用密钥登录 的完整配置步骤(服务端 + 客户端)。


一、服务端配置(Debian)

1. 安装 OpenSSH(一般已装)

sudo apt update
sudo apt install openssh-server

2. 创建 SFTP 用户(可选)

sudo adduser sftpuser

⚠️ 如果只做 SFTP,可不设密码或设复杂密码。


3. 配置 SSH 仅允许密钥登录(推荐)

编辑配置文件:

sudo nano /etc/ssh/sshd_config

关键配置:

PubkeyAuthentication yes
PasswordAuthentication no

如果是 专用 SFTP 用户,可加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication no
    AllowTcpForwarding no

保存后重启:

sudo systemctl restart ssh

二、客户端生成密钥

在 你的电脑(客户端) 执行:

ssh-keygen -t rsa -b 4096

默认生成:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

⚠️ 不要泄露私钥


三、把公钥放到 Debian 服务器

方法 1:手动

# 在客户端
scp ~/.ssh/id_rsa.pub user@server:/tmp/

# 在服务器
mkdir -p /home/sftpuser/.ssh
cat /tmp/id_rsa.pub >> /home/sftpuser/.ssh/authorized_keys
chmod 700 /home/sftpuser/.ssh
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh

方法 2:一行命令(推荐)

ssh-copy-id sftpuser@server_ip

四、Chroot 目录权限(很重要)

如果用了 ChrootDirectory:

sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

再建可写目录:

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload

五、客户端登录测试

sftp -i ~/.ssh/id_rsa sftpuser@server_ip

或默认密钥:

sftp sftpuser@server_ip

六、常见问题

❌ Permission denied (publickey)

  • 公钥没放对
  • .ssh 权限不对
  • 用户不是 Chroot 目录owner

❌ broken pipe

  • ChrootDirectory 权限不是 root:root

如果你告诉我:

  • 是否 只允许 SFTP(禁止 SSH)
  • 是否 多用户
  • 是否 Docker / 云服务器

我可以给你更精确的配置。

0 踩