Linux下用OpenSSH搭建SFTP服务器的5个常见坑及解决方案(附详细配置)

Linux下用OpenSSH搭建SFTP服务器的5个关键配置项(附避坑指南) 本文深入解析了在Linux系统下使用OpenSSH搭建SFTP服务器的5个关键配置项,包括ChrootDirectory权限、ForceCommand与Match指令、并发连接限制、日志审计以及身份验证强化,并提供了实战避坑指南,帮助运维人员构建安全、稳定、高效的SFTP服务。 阅读详情

Linux下用OpenSSH搭建SFTP服务器的5个常见坑及解决方案(附详细配置)

如果你刚接手一个需要快速搭建安全文件共享服务的任务,或者正为团队协作寻找一个既简单又可靠的内部文件传输方案,那么基于OpenSSH的SFTP服务器很可能就是你的首选。它几乎内置于所有现代Linux发行版中,无需安装额外臃肿的软件包,就能提供一个加密的、功能完整的文件传输通道。听起来很美好,对吧?但现实往往是,当你按照一篇“三步速成”教程操作后,却卡在了权限错误、连接失败或者用户被锁死在根目录的窘境里。这些“坑”并非OpenSSH的设计缺陷,而恰恰是它安全模型的体现——只是配置时稍有不慎,就会让新手运维感到挫败。

这篇文章不会重复那些基础的安装步骤,而是直接切入我在多次生产环境部署中遇到的五个最典型、也最容易让人栽跟头的实际问题。我们将从权限设置的微妙之处、Chroot目录结构的强制性要求,到防火墙与SELinux的隐形拦截、并发连接的限制,以及用户shell与访问控制的平衡,逐一拆解。每个问题都配有完整的命令和配置片段,目标就是让你在搭建企业内网文件共享或跨团队协作的SFTP服务时,能绕开这些暗礁,一次部署成功。

1. 权限之殇:为什么ChrootDirectory的所有者必须是root?

这是搭建SFTP服务器时第一个,也是最具迷惑性的坑。很多教程会告诉你创建一个目录(比如/sftp),然后把它作为用户的Chroot(监狱)目录。但当你兴冲冲地设置好,尝试连接时,却收到一个冰冷的“Connection closed”或“Permission denied”错误,而系统日志(/var/log/secure 或 /var/log/auth.log)里可能只有一句模糊的 bad ownership or modes for chroot directory。

问题的核心在于OpenSSH对ChrootDirectory目录极其严格的所有权和权限要求。 根据官方文档和安全设计,被指定为ChrootDirectory的路径及其每一级上级目录,都必须满足以下条件:

  • 所有者必须是root用户。
  • 所属组可以是任意组,但不能是即将被chroot的用户所在的主要组。
  • 目录权限不能超过755(即rwxr-xr-x)。 这意味着除了root,其他任何用户都不能在该目录下进行写入操作。

为什么这么设计?想象一下,如果用户能修改自己“监狱”的根目录,他就有可能通过符号链接或其他方式逃逸出限制,访问到系统其他文件。因此,OpenSSH在启动SFTP会话前,会进行严格的检查,任何一项不满足,都会直接拒绝连接。

解决方案:遵循“根目录只读,子目录可写”的分层结构。

正确的做法不是让用户直接读写Chroot根目录,而是在其下创建子目录,并将子目录的所有权交给相应用户。下面是一个清晰的实操步骤:

  1. 创建并设置Chroot根目录(所有权归root,权限755):

    sudo mkdir -p /sftp_data
    sudo chown root:root /sftp_data
    sudo chmod 755 /sftp_data
    

    注意:/sftp_data的所有者必须是root,权限必须是755或更严格(如750),但绝不能有w(写)权限给其他用户。

  2. 为每个SFTP用户创建专属的可读写子目录:

    # 假设用户名为 ‘team_a’
    sudo mkdir -p /sftp_data/team_a/upload
    sudo chown team_a:team_a /sftp_data/team_a/upload
    sudo chmod 770 /sftp_data/team_a/upload # 用户和同组用户可读写
    

    这样,用户team_a登录后,其根目录是/sftp_data(他只读),但他可以完全控制/sftp_data/team_a/upload目录下的文件。

  3. 在/etc/ssh/sshd_config中配置Match规则:

    Subsystem sftp internal-sftp  # 使用内置SFTP,性能更好
    
    Match Group sftpusers  # 对属于sftpusers组的用户应用以下规则
        ForceCommand internal-sftp
        ChrootDirectory /sftp_data
        PermitTunnel no
        AllowAgentForwarding no
        AllowTcpForwarding no
        X11Forwarding no
    

一个快速诊断命令:在重启sshd前,使用sshd -t测试配置文件语法。如果配置没问题,但连接失败,请立刻检查目录权限:

namei -l /sftp_data

这个命令会递归列出路径上每一级目录的权限和所有者,帮你快速定位是哪一级目录不符合要求。

2. 目录结构陷阱:用户登录后“无家可归”与上传失败

即使你跳过了第一个坑,正确设置了Chroot目录权限,用户可能还是会遇到两个尴尬的问题:1) 登录后发现自己在一个空荡荡的根目录,找不到自己的专属文件夹;2) 尝试上传文件时被拒绝。

这通常是因为用户的家目录(Home Directory)设置与Chroot环境不匹配。在创建用户时,如果使用useradd -d /sftp_data/team_a team_a,系统会在真实的/sftp_data/team_a创建家目录。但当我们通过Chroot将用户限制在/sftp_data时,他登录后看到的根目录就是/sftp_data,而team_a这个子目录对他而言就变成了/team_a。如果这个子目录的所有者不是该用户,他自然无法写入。

解决方案:在用户创建和目录结构设计上保持一致性。

这里推荐一种更清晰、更少混淆的做法:

  1. 创建系统用户,并指定一个无实际作用的家目录(或直接指定到Chroot下的子目录):

    sudo useradd -m -d /home/team_a_sftp -s /bin/false team_a
    sudo usermod -a -G sftpusers team_a
    

    -d /home/team_a_sftp 只是系统记录的家目录,实际不影响SFTP会话。-s /bin/false 确保用户不能获得SSH shell。

  2. 按照“方案一”创建目录结构:/sftp_data(root所有,755)和 /sftp_data/team_a(team_a所有,770)。

  3. 配置SSH,确保用户登录后位于正确的起始目录。在sshd_config的Match块中,其实不需要额外指定,因为Chroot后,用户的根就是/sftp_data。但如果你想用户一登录就进入自己的team_a子目录,目前OpenSSH的ChrootDirectory本身并不直接支持每个用户不同的起始子目录。用户登录后需要自己cd team_a。

    一个变通方案是使用ForceCommand配合一个包装脚本,但更简单直接的做法是教育用户,或者在客户端使用支持“初始远程目录”的SFTP客户端(如FileZilla)进行连接。

关于上传失败,请再次确认可写子目录(如/sftp_data/team_a)的所有权和权限:

ls -ld /sftp_data/team_a

输出应为类似 drwxrwx---,所有者为 team_a。

3. 防火墙与SELinux:那堵看不见的墙

你的配置完美无缺,目录权限也无可挑剔,但从另一台机器连接时,却一直超时。这个问题十有八九出在网络层面。

防火墙(Firewall) 是第一个需要检查的对象。CentOS/RHEL 7+通常使用firewalld,Ubuntu/Debian可能使用ufw,或者传统的iptables。OpenSSH的SFTP服务运行在SSH守护进程(sshd)之上,使用的是SSH的端口(默认22)。因此,你需要放行的是SSH服务的端口,而不是一个独立的“SFTP端口”。

解决方案:放行SSH端口(或你自定义的端口)。

  • 对于firewalld:

    sudo firewall-cmd --permanent --add-service=ssh  # 放行默认22端口
    # 或者,如果你修改了SSH端口到2222
    # sudo firewall-cmd --permanent --add-port=2222/tcp
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all  # 确认规则已生效
    
  • 对于ufw:

    sudo ufw allow ssh
    # 或 sudo ufw allow 22/tcp
    sudo ufw enable
    sudo ufw status verbose
    

SELinux(Security-Enhanced Linux) 是第二个潜在的“拦路虎”。在启用了SELinux的系统(如CentOS/RHEL)上,即使防火墙开放了端口,SELinux策略也可能阻止sshd进程访问你自定义的Chroot目录。

解决方案:调整SELinux上下文或策略。

  1. 首先,查看SELinux是否启用并处于 enforcing 模式:

    getenforce
    # 如果返回 ‘Enforcing’,说明SELinux正在强制执行策略。
    
  2. 为Chroot目录及其内容添加正确的SELinux文件上下文。sshd进程对于Chroot目录期望的上下文通常是ssh_home_t或其相关类型。

    # 递归修改 /sftp_data 及其下所有文件的上下文
    sudo semanage fcontext -a -t ssh_home_t "/sftp_data(/.*)?"
    sudo restorecon -Rv /sftp_data
    

    semanage命令可能需要安装policycoreutils-python-utils包。

  3. 如果上述方法不奏效,或者你想快速验证是否是SELinux导致的问题,可以临时将SELinux设置为宽容模式:

    sudo setenforce 0
    

    注意:这只是一个诊断步骤。 如果问题在宽容模式下消失,那就证实了是SELinux的问题。生产环境中,在找到根本原因后,应重新设置为强制模式(sudo setenforce 1),并应用永久性解决方案(如上面的fcontext规则),而不是长期禁用SELinux。

  4. 查看SELinux审计日志,获取更详细的阻止信息:

    sudo ausearch -m avc -ts recent | grep sshd
    

    日志会告诉你sshd试图访问什么资源,被什么规则阻止,从而给你更精确的调整方向。

4. 并发与性能:连接数限制与超时问题

当你的SFTP服务器开始服务于多个用户或自动化脚本时,可能会遇到“connection is closed by foreign host”错误,或者在负载稍高时响应缓慢。这很可能触及了OpenSSH默认的并发连接和会话限制。

OpenSSH有两个关键参数控制着并发性:

  • MaxStartups:限制未完成身份验证的并发连接数。格式通常为 start:rate:full(例如 10:30:100),表示允许10个并发尝试,从第11个开始,在30%的时间内随机丢弃连接,直到达到最大100个。
  • MaxSessions:限制单个网络连接(一个已认证的会话) 中可以打开的多路复用于会话数。默认通常是10。对于SFTP,一个连接通常只用一个会话,但这个值如果设得太低,可能会影响一些客户端行为或端口转发。

对于文件共享服务器,特别是需要处理批量传输的场景,默认值可能过于保守。

解决方案:根据预期负载调整sshd_config中的并发参数。

  1. 编辑 /etc/ssh/sshd_config,找到或添加以下行:

    # 增大未认证并发连接数,例如允许最多100个同时尝试,平滑增长
    MaxStartups 100:30:200
    # 增大每个连接允许的会话数,对于纯SFTP服务器,适当增大即可
    MaxSessions 50
    # 此外,还可以调整客户端活跃保持时间,防止长时间空闲断开
    ClientAliveInterval 300
    ClientAliveCountMax 2
    

    ClientAliveInterval 300表示服务器每300秒向客户端发送一次保活消息,ClientAliveCountMax 2表示如果连续2次没有收到响应才断开连接。这有助于稳定长时间的文件传输连接。

  2. 修改后,务必测试配置并重启服务:

    sudo sshd -t
    sudo systemctl restart sshd
    
  3. 监控连接数,以评估你的设置是否合理:

    # 查看当前活跃的SSH/SFTP连接数
    sudo netstat -tnpa | grep :22 | grep ESTABLISHED | wc -l
    # 或者使用ss命令
    sudo ss -o state established '( sport = :22 )' | wc -l
    

参数调整建议表:

参数默认值(典型)文件服务器建议值说明
MaxStartups10:30:10050:30:200根据预期并发登录峰值调整。值太小会导致新连接被拒绝。
MaxSessions1030-50对于纯SFTP,单个连接多会话需求低,但适当提高可留有余地。
ClientAliveInterval0 (禁用)300300秒(5分钟)发送一次保活包,避免防火墙断开会话。
ClientAliveCountMax32配合上面,最多允许2次无响应,即最多空闲10分钟。
MaxAuthTries63安全建议:降低每次连接的最大认证尝试次数,防止暴力破解。

提示:调整这些参数时,需在安全性和可用性之间取得平衡。过于宽松可能增加资源消耗和攻击面,过于严格则影响用户体验。

5. 访问控制与Shell的平衡:如何只给SFTP,不给Shell?

这是企业场景下的一个经典需求:让一部分用户(如外部合作伙伴、特定部门成员)只能通过SFTP上传/下载文件,而不能获得完整的SSH shell登录权限,也不能进行端口转发等操作。 原始文章中用-s /bin/false是一种方法,但结合ChrootDirectory和ForceCommand,我们可以实现更精细的控制。

潜在问题:仅仅设置/bin/false或/usr/sbin/nologin作为登录shell,虽然阻止了交互式shell登录,但如果用户在sshd_config中没有被正确匹配和限制,他们可能仍然能够执行SCP命令或通过SSH通道进行其他非SFTP操作。

解决方案:使用Match块配合ForceCommand internal-sftp实现强制SFTP-only访问。

这才是实现SFTP-only访问的正确且推荐的方式。我们在前面的配置中已经用到了它。让我们再深入看一下:

  1. 创建SFTP专用组(如sftpusers)并将相关用户加入该组。
  2. 在/etc/ssh/sshd_config文件末尾添加如下配置:
    # ... 其他全局配置 ...
    
    # 以下配置仅对 sftpusers 组的成员生效
    Match Group sftpusers
        # 强制使用内置SFTP服务器,这是关键!
        ForceCommand internal-sftp
        # 指定Chroot目录
        ChrootDirectory /sftp_data
        # 禁用所有可能的转发和隧道功能,收紧安全
        PermitTTY no
        AllowAgentForwarding no
        AllowTcpForwarding no
        X11Forwarding no
        PermitTunnel no
        # 允许密码认证(如果使用)。更推荐配置公钥认证。
        PasswordAuthentication yes
        # 可以进一步限制允许的认证方法
        # AuthenticationMethods publickey,password
    

这样配置的效果是:当属于sftpusers组的用户尝试通过SSH连接时,sshd会直接启动internal-sftp子系统,而不会给用户一个shell。用户无法执行任何Shell命令,也无法建立隧道。他们能做的只有SFTP协议支持的文件操作。

关于用户Shell的设置:在这种情况下,即使用了ForceCommand,将用户的shell设置为/bin/false或/sbin/nologin仍然是一个深度防御的好习惯。这提供了另一层保护,即使SSH配置在某些情况下未被正确应用(例如,复杂的Match条件意外失效),用户也无法获得shell。

创建用户的完整命令示例:

# 创建用户,指定一个无用的家目录和无效的shell,并加入sftpusers组
sudo useradd -m -d /home/sftp_guest -s /bin/false guest_user
sudo usermod -a -G sftpusers guest_user
sudo passwd guest_user # 设置密码
# 或者使用公钥,更安全
# sudo mkdir -p /home/sftp_guest/.ssh
# sudo echo "ssh-rsa AAAAB3NzaC1yc2E..." > /home/sftp_guest/.ssh/authorized_keys
# sudo chown -R guest_user:guest_user /home/sftp_guest/.ssh
# sudo chmod 700 /home/sftp_guest/.ssh
# sudo chmod 600 /home/sftp_guest/.ssh/authorized_keys

最后,别忘了每次修改配置后,都用sudo sshd -t检查语法,然后用sudo systemctl restart sshd(或reload)让配置生效。搭建完成后,务必从客户端(使用sfpt命令、FileZilla、WinSCP等工具)进行连接测试,上传下载文件,验证所有功能是否符合预期,并检查服务器日志确认没有异常。

【Linux 从基础到进阶】FTP/SFTP 服务器搭建与管理 文件传输协议(FTP)和安全文件传输协议(SFTP)是常用的文件传输工具。FTP 主要用于局域网内部或可信网络中,而 SFTP 则是基于 SSH 的加密文件传输协议,适合在不安全的网络环境中使用。本文将介绍如何在 CentOS 和 Ubuntu 上搭建和管理 FTP 与 SFTP 服务器,并进行相应的安全配置和性能优化。 阅读详情

相关推荐

Linux——SFTP简介及安装教程

SFTP(SSH File Transfer Protocol)是一种基于SSH(安全外壳)的安全的文件传输协议,使用SFTP协议可以在文件传输过程中提供一种安全的网络的加密算法,从而保证数据的安全传输。SFTP在Linux操作系统中,默认的端口客是22,传输提供了密码和密钥验证机制,可以有效防止传输过程的威胁和公技。ContOS自带SFTP软件包,你可以检查以确认你是否已具有所需的SSH软件包。

zhanglongfei1016的专栏 2891

Linux 搭建 sftp 服务器详解

一、背景:订单要求实现 /sftp 顶层目录作为 sftp 保存文件位置 二、简易常规 sftp 服务器搭建及要点详解 1、sftp-server vs. internal-sftp 2、Match 条件匹配指令 3、ChrootDirectory 限定根目录指令 4、sftp 用户家目录与保存文件目录及 sftp 免密码登录设置 5、SELinux 属性对 sftp 密钥登录的影响 三、解决顶层目录为 sftp 目录的问题 四、扩展:sftp 服务器公共目录、工作组目录设置视频介绍

learndiary的博客 4995

从零搭建安全私有的SFTP服务器:OpenSSH配置与内网穿透实战

文件传输协议(FTP)是网络文件共享的基础,但其明文传输存在安全隐患。基于SSH协议的安全文件传输协议(SFTP)应运而生,它通过加密通道传输数据,从根本上解决了认证信息和文件内容泄露的风险。这项技术的核心价值在于为企业与个人提供了安全、可控的远程文件访问能力,尤其适用于需要保护敏感数据的内部文件共享、远程办公及跨设备同步等场景。本文聚焦于利用系统原生OpenSSH服务,结合内网穿透技术,构建一个可从公网安全访问的私有SFTP服务器方案,其中涉及**ChrootDirectory**权限配置与**SSH密钥

weixin_28716443的博客 307

openssh升级sftp_Linux下利用OpenSSH建立SFTP服务器

Linux下采用OpenSSH实现SFTP上传操作。将所有SFTP用户组的用户都锁定在指定目录下,禁止SSH登录,可以提高安全性。文中要用到的openssl-1.0.0.tar.gz与openssh-5.4p1.tar.gz在Linux公社(LinuxIDC.com) 1 号FTP服务器在2011年LinuxIDC.com\1月\Linux下利用OpenSSH建立SFTP服务器\1. OpenSS...

weixin_32135505的博客 239

OpenSSH与SFTP服务器配置与安全实践指南

SSH(Secure Shell)是Linux系统管理中实现安全远程登录和文件传输的核心协议,其加密通信机制基于非对称加密和对称加密的混合体系。作为SSH的子系统,SFTP(SSH File Transfer Protocol)在22号端口上提供加密的文件传输服务,相比传统FTP具有更高的安全性。在企业级应用中,通过OpenSSH实现SFTP服务既能满足合规要求,又能简化网络架构。典型配置包括Chroot监狱目录隔离、密钥认证替代密码、以及fail2ban防御暴力破解等安全加固措施。这些技术在云服务器管理、

weixin_34095889的博客 523

搭建SFTP服务器

CentOS / RHEL / Rocky Linux 1、安装 OpenSSH 服务器 sudo yum install -y openssh-server 安装后,SSH 服务通常已启动,可通过 sudo systemctl status sshd 查看状态。2、创建 SFTP 用户组为了便于管理,专门创建一个组(如 sftp),所有 SFTP 用户都将属于该组。 sudo groupadd sftp 3、创建 SFTP 用户以创建用户 sftpuser 为例:sudo useradd -g sf

renzhe1301的专栏 473

linux服务器sftp连接数,linux 配置sftp服务器总结【环境配置】

众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的.必要条件:你的openssh-server版本至少是4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。如何查看自己服务器上的ssh版本?大家可以尝试以下命令:ssh -V一、安装采用openssh实现sftp上传操作。将所有sftp用户组的用户都锁定在指定目录下,禁止SSH登录,...

weixin_42382558的博客 4573

OpenSSH Server与SFTP配置实战指南

SSH(Secure Shell)协议作为网络安全通信的基石,通过加密通道实现远程登录和文件传输。其子协议SFTP(SSH File Transfer Protocol)继承了SSH的安全特性,无需额外配置TLS/SSL即可实现加密传输,成为替代传统FTP的首选方案。OpenSSH作为最广泛使用的SSH实现,内置SFTP子系统,可快速搭建企业级文件传输服务。在Linux服务器运维中,通过配置ChrootDirectory实现用户隔离,结合密钥认证和权限管理,可构建高安全的文件交换系统。典型应用场景包括网络设

weixin_34289454的博客 392

CentOS 搭建 SFTP 服务器(一)

快速搭建SFTP服务

Cat God 007的博客 1164

如何在 Linux 服务器上安装和使用 SFTP?

SFTP 或 SSH 文件传输协议是一种在两台计算机之间安全传输数据的方法。它是运行在 SSH 协议之上并利用其安全性并完全支持其身份验证的 FTP。 现在,建议使用 SFTP 而不是旧的旧 FTP 或 FTP/S 协议。SFTP 默认是安全的,因为这就是 SSH 的工作方式。从安全的角度来看,SFTP 还可以保护您免受密码嗅探和中间人攻击 (MiTM)。 与 SSH 一样,SFTP 也使用加密和加密哈希函数保护您的数据完整性。此外,它还支持多种安全身份验证方法,包括密码和基于密钥的身份验证。此外,它减少了

网络技术联盟站 9354

如何在 Rocky Linux 8 上设置 SFTP 服务器?

Rocky Linux 8 是一个基于 Red Hat Enterprise Linux (RHEL) 源代码构建的企业级 Linux 发行版,提供了稳定和可靠的操作系统环境。在设置 SFTP 服务器之前,首先需要在你的服务器上安装 Rocky Linux 8。

网络技术联盟站 1629

linux openssh sftp,linux 用openssh搭建sftp(包含注意点)

首先,最初需要查看下当前服务器是否已安装openssl和openssh检验: ssh -V一。如果没安装。搭建sftp,需要三个部分: zlib(包含zlib,zlib-devel),openssl,openssh,所需要的rpm包在csdn里都有1.一般的linux系统,包括rehat,centos等基本都有安装openssl检测: which openssl由于依赖性的问题,强制安装open...

weixin_39791349的博客 401

Codex接入CCSwitch:本地代理与模型路由配置指南

在AI编程工具链中,本地代理与模型路由是连接智能体与模型服务的核心桥梁。Codex作为OpenAI推出的编程智能体,虽然具备强大的仓库理解和自主编码能力,但其默认模型链路固定,导致在多模型切换、内网统一管理及成本控制上存在天然瓶颈。CCSwitch正是为解决这一痛点而生的本地代理工具,它通过OpenAI兼容协议将Codex的请求透明转发至DeepSeek、通义千问等第三方模型服务,使模型切换如同点击按钮般简单。本文从本地代理和模型路由器的基础原理切入,系统讲解Codex与CCSwitch的安装配置、模型ID

weixin_33910460的博客 429

linux下创建sftp用户

如下图:

qq_42999679的博客 1479

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

Allegro Design Entry CIS 与 OrCAD Capture CIS:PCB设计工具链中的双雄对决

本文深入对比了Cadence旗下两大原理图设计工具Allegro Design Entry CIS与OrCAD Capture CIS。Allegro Design Entry CIS源自Concept HDL,定位高端,强调自顶向下的层次化设计和与Allegro PCB Editor的无缝约束管理,适合大型复杂系统及团队协作。OrCAD Capture CIS则以其出色的易用性、广泛的兼容性和强大的CIS数据库功能著称,是中小型项目及跨工具链协作的通用选择。文章从历史渊源、核心功能、适用场景等多维度剖析,

bush的博客 489

openssh中sftp功能搭建sftp服务器

1、安装opensslOpenSSL安装,版本要高于0.9.6[middle@wjxserver ~]$ rpm -qf `which openssl`openssl-1.0.1e-42.el6_7.1.x86_64如果没有安装openssl,请安装openssl,注意选择安装openssl版本,避免选项有心脏出血漏洞的版本。检查openssl当前版本是否修复心脏出血漏洞:[middle@wjxs...

wengjixi的专栏 9170

在银河麒麟V10上部署Atlas 300i Duo:从固件到驱动的一站式踩坑笔记

日期:2025-09-09关键词:鲲鹏920、Atlas 300i Duo、银河麒麟V10、NPU、驱动、固件。

weixin_41544125的博客 2818

linux设置sftp目录,RedHat安装OpenSSH和配置sftp锁定目录

RedHat安装OpenSSH和配置sftp锁定目录[日期:2012-12-05]来源:51cto作者:lhf507[字体:大 中 小]操作系统:[root@station28 ~]# cat /etc/issue.netRed Hat Enterprise Linux Server release 5.4 (Tikanga)Kernel \r on an \m[root@station28 ~]...

weixin_31842775的博客 876

BUPT软件安全实验三

可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。

7xun's space 1967

Python XML 转 JSON,XML 转字典

今天我们将学习如何在 Python 中将 XML 转换为 JSON 和 XML 转换为字典。我们可以使用 Python 的xmltodict模块来读取 XML 文件并将其转换为字典或 JSON 数据。我们还可以在大型 XML 文件上进行流式处理,并将其转换为字典。在进入编码部分之前,让我们首先了解为什么需要进行 XML 转换。

rubys_的专栏 2504

搭建一个简易的 sftp 服务器

搭建一个简易的 sftp 服务器 本文将基于 Linux 系统,搭建基于 open-ssh-sftp-server 的 sftp 服务器。 Step 1. 安装依赖包 对于 Ubuntu 系统而言: sudo apt-get install openssh-client openssh-server openssh-sftp-server 对于 CentOS 系统而言: sudo yum i...

sigmarising的博客 991

《MPDIoU:边界框回归的高效革新与YOLOv8集成实战指南》

摘要: MPDIoU(多优先级距离IoU)通过引入中心距离、形状差异和尺度变化的三步优化策略,解决了传统IoU在目标检测中的尺度敏感、收敛低效和场景局限问题。相较于GIoU、DIoU等主流方法,MPDIoU在精度、速度和鲁棒性上实现全面提升,尤其在复杂场景和小目标检测中表现突出。通过代码集成和训练优化,MPDIoU在YOLOv8中显著提升COCO数据集AP指标,并在智能安防(密集行人检测)和工业质检(微小缺陷定位)等垂直领域验证了其应用价值。未来研究方向包括动态权重调整和多模态融合,进一步拓展边界框回归的精

m0_64661770的博客 160

Linux(centos)安装sftp

1、首先用ssh -v 查询主机是否安装了openssh,如果查看不到版本号,则表示需要安装openssh,具体命令如下 yum install -y openssl openssh-server yum install openssh* systemctl enable sshd systemctl start sshd service sshd start sudo firewall-cmd...

xuxiaopang0417的博客 2710

D457深度相机调试记录(max96712+max9295A)

使用max96712解串器解4路D457相机。采集深度相机Depth和RGB流。

navy2015_163的博客 1269

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: ARCGIS实战:10分钟搞定InVEST生境质量模型数据预处理(附免费数据源)
下一篇: PyTorch-Lightning安装避坑指南:如何避免pip/conda混用导致torch被降级
git9versioner
博客等级 码龄4年 75粉丝 1650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值