ssh连接成功,sftp连接失败

故障描述

分配了一台新的服务器,SSH链接正常使用,但是等我传文件的时候发现SFTP不好使,测试了多个SSH工具依旧是不能上传和下载。

查了一下资料,发现和工具啥的没关系,是sshd配置文件的事儿。

解决方案

经排查调试,非系统防火墙拦截,非 SELinux 阻断问题,更非端口及服务运行问题,属 sshd 配置文件的原因。

  1. 将sshd配置文件/etc/ssh/sshd_config中的/usr/libexec/openssh/sftp-server信息更改为 OpenSSH 内置的 SFTP 服务器。
sudo vim /etc/ssh/sshd_config
Subsystem      sftp    /usr/libexec/openssh/sftp-server
# 将其修改为:
Subsystem      sftp    internal-sftp
  1. 然后重启sshd服务
sudo systemctl restart sshd

总结(摘抄)

  1. 为什么会出现这种问题呢?

某些情况下,内置 SFTP 服务器不依赖于外部路径,避免了路径配置错误或文件权限问题。外部的 sftp-server 可能会有兼容性问题或配置错误,导致 SFTP 服务无法正常工作,使用 internal-sftp 则可以避免这些问题出现额概率。且 internal-sftp 通常与 OpenSSH 的其他组件更好地集成,可提供更好的性能和兼容性。

  1. Ex:两种服务器配置有什么异同或优缺点呢?
  • Subsystem sftp /usr/libexec/openssh/sftp-server
    • 外部 SFTP 服务器:这种方式使用了一个外部的 SFTP 服务器程序,通常是 /usr/libexec/openssh/sftp-server
    • 工作原理:当 SSH 服务器接收到 SFTP 请求时,它会启动一个独立的 sftp-server 进程来处理 SFTP 会话。这个进程负责处理文件传输请求,并与客户端通信。
    • 优点:灵活性较高,可以单独配置和调试 sftp-server
    • 缺点:可能会引入额外的开销,因为每次 SFTP 会话都会启动一个新的进程。
  • Subsystem sftp internal-sftp
    • 内部 SFTP 服务器:这种方式使用了 OpenSSH 内置的 SFTP 服务器。
    • 工作原理:当 SSH 服务器接收到 SFTP 请求时,它会直接在现有的 SSH 进程中处理 SFTP 会话,而不启动额外的 sftp-server 进程。这使得 SFTP 会话更加高效,因为它减少了进程切换的开销。
    • 优点:性能更好,因为不需要启动额外的进程。配置和管理也更简单。
    • 缺点:灵活性较低,因为所有的 SFTP 处理都在 SSH 进程中进行,无法单独配置 sftp-server
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值