温馨提示×

Debian SFTP如何配置SSH密钥

小樊
44
2025-10-07 10:52:55
栏目: 智能运维

1. 生成SSH密钥对(客户端操作)
在客户端机器上生成RSA密钥对(推荐4096位强度),用于身份认证。执行以下命令:
ssh-keygen -t rsa -b 4096
按提示操作(可直接按回车键使用默认路径~/.ssh/id_rsa,私钥不建议设置密码短语以简化流程),生成后会得到两个文件:

  • id_rsa:私钥(需严格保密,权限设为600);
  • id_rsa.pub:公钥(需上传至服务器)。

2. 将公钥复制到Debian SFTP服务器
将客户端的公钥id_rsa.pub内容添加到服务器目标用户的~/.ssh/authorized_keys文件中,实现免密认证。常用两种方法:

  • 自动复制(推荐):使用ssh-copy-id命令,自动完成公钥传输和权限设置:
    ssh-copy-id username@server_ip
    输入服务器用户的密码后,公钥会自动追加到~/.ssh/authorized_keys中。
  • 手动复制:若无法使用ssh-copy-id,可手动操作:
    ① 在客户端查看公钥内容:cat ~/.ssh/id_rsa.pub,复制全部输出;
    ② 登录服务器:ssh username@server_ip
    ③ 创建.ssh目录并设置权限:mkdir -p ~/.ssh && chmod 700 ~/.ssh
    ④ 将公钥内容追加到authorized_keysecho "粘贴的公钥内容" >> ~/.ssh/authorized_keys
    ⑤ 设置authorized_keys文件权限:chmod 600 ~/.ssh/authorized_keys

3. 配置SSH服务器(Debian系统)
编辑SSH服务的主配置文件/etc/ssh/sshd_config,启用密钥认证并优化SFTP设置:
sudo nano /etc/ssh/sshd_config
找到并修改以下关键参数(取消注释或新增):

# 启用公钥认证(必须)
PubkeyAuthentication yes
# 指定authorized_keys文件路径(默认即可)
AuthorizedKeysFile .ssh/authorized_keys
# 可选:禁用密码认证(仅允许密钥认证,提升安全性)
PasswordAuthentication no
# 可选:禁用PAM认证(若不需要额外认证模块)
ChallengeResponseAuthentication no
# 确保SFTP子系统启用(默认路径)
Subsystem sftp /usr/lib/openssh/sftp-server

若需限制SFTP用户只能访问自己的家目录(chroot jail),可添加以下配置(匹配特定用户组,如sftpusers):

Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

保存并退出编辑器(Ctrl+OEnterCtrl+X)。

4. 重启SSH服务
使配置变更生效,执行以下命令重启SSH服务:
sudo systemctl restart sshd
可通过sudo systemctl status sshd确认服务状态(显示“active (running)”即为正常)。

5. 测试SFTP密钥认证连接
在客户端使用私钥连接服务器,验证配置是否成功:
ssh -i ~/.ssh/id_rsa username@server_ip
或直接使用sftp命令:
sftp -i ~/.ssh/id_rsa username@server_ip
若配置正确,将无需输入密码直接登录服务器(或进入SFTP命令行界面)。

6. 安全加固(可选但推荐)

  • 设置私钥权限:客户端私钥id_rsa的权限必须为600,防止未授权访问:
    chmod 600 ~/.ssh/id_rsa
  • 限制SSH访问IP:在/etc/ssh/sshd_config中添加AllowUsers username@your_client_ip,仅允许指定IP连接。
  • 定期更换密钥:每6-12个月生成新的密钥对,替换旧密钥,降低密钥泄露风险。
  • 监控登录日志:通过sudo tail -f /var/log/auth.log实时查看SSH登录记录,及时发现异常登录行为。

0