温馨提示×

怎样配置Debian SFTP自动登录

小樊
41
2025-11-28 06:27:16
栏目: 智能运维

配置 Debian SFTP 自动登录

一 准备与安装

  • 在本地与服务器均安装 OpenSSH 客户端/服务器:sudo apt update && sudo apt install -y openssh-client openssh-server
  • 启动并开机自启 SSH 服务:sudo systemctl start ssh && sudo systemctl enable ssh
  • 确认 SSH 服务运行:sudo systemctl status ssh(应显示 active/running)。

二 基于密钥的免密登录(推荐)

  • 在本地生成密钥对(如尚未生成):ssh-keygen -t rsa -b 4096,默认生成 ~/.ssh/id_rsa~/.ssh/id_rsa.pub
  • 将公钥复制到服务器:ssh-copy-id user@remote_host
  • 加固私钥与目录权限:chmod 600 ~/.ssh/id_rsa;chmod 644 ~/.ssh/id_rsa.pub;chmod 700 ~/.ssh;chmod 700 ~/.ssh/authorized_keys。
  • 服务器端启用公钥认证:编辑 /etc/ssh/sshd_config,确保 PubkeyAuthentication yes,AuthorizedKeysFile .ssh/authorized_keys;保存后重启:sudo systemctl restart ssh
  • 测试免密登录:sftp user@remote_host,应直接进入 SFTP 会话。

三 服务器端安全与 Chroot 限制(可选但强烈建议)

  • 使用内部 SFTP 并限制用户仅能 SFTP:编辑 /etc/ssh/sshd_config,在文件末尾加入(可按用户或用户组匹配):
    Match User sftpuser
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
        PermitTTY no
    说明:Chroot 目录(此处为用户的 %h 主目录)及其上级目录必须归 root:root 且权限 755,否则 SFTP 会拒绝登录。
  • 若需指定固定目录(如网站目录),可改为:ChrootDirectory /sftp/www-data,并确保 /sftp/www-data 属主 root:root、权限 755;为用户可写子目录(如 /sftp/www-data/website_files)设置属主 www-data:www-data
  • 重启服务:sudo systemctl restart ssh
  • 验证限制:sftp sftpuser@your_server_ip,执行 cd … 应失败,pwd 显示 /(即被 chroot 的根)。

四 客户端自动登录与脚本化

  • 使用 SSH 配置文件保存连接参数:编辑 ~/.ssh/config,加入
    Host mysftp
        HostName your_server_ip
        User sftpuser
        IdentityFile ~/.ssh/id_rsa
        Port 22
    之后可直接执行:sftp mysftp
  • 非交互批处理(无需手动输入密码)可用 sftp 的批量命令文件:
    echo “get /remote/file /local/file” > batch.txt
    sftp -b batch.txt mysftp
    注意:仅在已配置密钥免密时,上述命令才真正“全自动”。
  • 如需在脚本中静默连接,可临时关闭主机密钥检查(仅在内网可信环境使用):sftp -o StrictHostKeyChecking=no mysftp

五 常见问题排查

  • 配置语法检查:sudo sshd -t;查看日志:sudo tail -f /var/log/auth.log
  • 权限要点:
    • 用户主目录(或 Chroot 目录)及其上级目录:属主 root:root、权限 755
    • 用户可写目录:属主对应用户(如 www-data:www-data),权限 755/775 视需求而定。
  • 连接被拒绝或卡住:确认 sshd 运行、端口 22 开放、密钥已正确部署、以及 Chroot 目录权限无误。

0