dropear 配置 sftp-server

SFTP与Dropbear配置
本文介绍了SFTP(Secure File Transfer Protocol)的工作原理及其与传统FTP的区别,详细讲解了如何在Linux环境下使用Dropbear实现SFTP服务器配置的过程,并列举了几款常用的SFTP客户端应用。


Menu

Skip to content

•Android
•Featured
•Gaming
•Linux Distro
•Linux Man Pages
•Linux Explore How to ◦How to start shell script writing
◦SFTP (Secure File Transfer Protocol) With Dropbear
◦L2TP How to ◾L2TP VPN using rp-l2tpd
◾L2TP VPN using xl2tpd

◦LDAP How to
◦PAM with Radius Authentication

•Linux Explore Tips & Tricks ◦Message on Linux terminal
◦Remote packet capture using WireShark & tcpdump
◦Tcpdump how to
◦Yum a package management tool
◦Configure Remote Desktop from Command Line
◦Configure syslog to print the Security violation alarm on user terminal
◦Umount a busy partition

 

 

SFTP (Secure File Transfer Protocol) With Dropbear
 

 

Introduction

SFTP (SSH File Transfer Protocol, sometimes called Secure File Transfer Protocol) is a network protocol that provides file transfer and manipulation functionality over any reliable data stream. It is typically used with version 2 of the SSH protocol (TCP port 22) to provide secure file transfer, but is intended to be usable with other protocols as well.

SFTP is a secure form of the ftp command. Whenever a user opens up a regular ftp session or most other TCP/IP connections, the entire transmission made between the host and the user is sent in plain text. Anyone who has the ability to snoop on the network packets can read the data, including the password information. If an unauthorized user can login, they have the opportunity to compromise the system.

When using ssh’s sftp instead of the ftp, the entire login session, including transmission of password, is encrypted. It is therefore much more difficult for an outsider to observe and collect passwords from a system using ssh/sftp sessions.

Following packets screenshots are showing the difference between the FTP & SFTP packets:

9-8-2009 11-56-59 AM

FTP Packet transmission

The highlighted area, in the above screenshot of FTP packet capture, is showing the user name & password in simple text form.

9-15-2009 9-50-49 PM

SFTP Packet Transmission

SFTP packet transmission is not showing any user name & password information in packet capture.

Downloading Package

In Linux, OpenSSH application can be used for SFTP server or client. This application also contain the SSH server & client but due to its high memory requirement, we are not going to use it for SSH server & client. Dropbear is a good alternative (lightweight) application for SSH server & client implementation. The dropbear doesn’t have the SFTP support but SFTP of openssh can be used with dropbear also.

To download the openssh application, click here. For the latest version of dropbear, click here.

Configure Dropbear SSH server

SSH server can’t work independently, it require SSH server (like dropbear) to run. Dropbear require libz & libcrypto to run, so please first install them (if not install already). To install the dropbear SSH server, follow the steps given below.

-bash-3.2# tar –xvf dropbear-0.52.tar.bz2

-bash-3.2# cd dropbear-0.52

-bash-3.2# ./configure

-bash-3.2# make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp”

-bash-3.2# make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp” install

It will install the dropbear SSH server. Now you can create the softlink of dbclient as ssh. It is not mandatory, you can also use dbclient instead of ssh command.

-bash-3.2# ln –s /usr/local/bin/dbclient /usr/bin/ssh

To start the dropbear SSH server, first create the dss & rsa keys (for the encryption of SSH packets) in /etc/dropbear directory. SSH server does work without encryption, so it is mandatory to create the keys.

-bash-3.2# dropbearkey –t dss –f /etc/dropbear/dropbear_dss_host_key

-bash-3.2# dropbearkey –t rsa –f /etc/dropbear/dropbear_rsa_host_key

Now dropbear can be started simply by following command.

-bash-3.2# dropbear

If above will done properly you can connect your system via SSH.

Configure OpenSSH SFTP-server

We need only SFTP-server application from OpenSSH package. To get the sftp-server, compile the openssh by following method.

-bash-3.2# tar –xvf openssh-5.2p1.tar.gz

-bash-3.2# cd openssh-5.2p1

-bash-3.2# ./configure

-bash-3.2# make sftp-server

It will compile only sftp-server from openssh package. You can find sftp-server binary in your current directory (openssh package directory). Copy the sftp-server binary file to /usr/libexec directory.

-bash-3.2# cp sftp-server /usr/libexec/sftp-server

Sftp-server may require libz.so.1 or libz.so.2 (softlink of libz library file) and libcrypto.so.5 or libcrpto.so.6 (soflink of libcrypto library). You can check this by executing the sftp-server binary in your system, it will show error if any required library or softlink is missing.

-bash-3.2# /usr/libexec/sftp-server

/usr/libexec/sftp-server: error while loading shared libraries: libcrypto.so.5: cannot open shared object file: No such file or directory

Above error can be recovered simply by creating a softlink of libcrpto library as libcrypto.so.5.

-bash-3.2# ln –s /lib/libcrypto.so.0.9.8b /usr/lib/libcrypto.so.5

Now you can able to connect your system using SFTP.

SFTP client applications

WinSCP – Free windows client with SFTP, SCP and FTP capability

PSFTP (an SFTP client, i.e. general file transfer sessions much like FTP)

FileZilla Client (also referred to as FileZilla) is a free, open source, cross-platform FTP as well as SFTP client.

SFTP is a command-line program that implements the client part of SFTP, supplied with OpenSSH package.

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
<think>好的,我现在要处理用户的问题:SSH配置文件中缺少Subsystem sftp配置以及sftp-server路径的问题。用户希望知道如何处理这种情况。首先,我需要回忆一下SSH服务配置的相关知识,特别是关于SFTP的部分。 SSH的配置文件通常是/etc/ssh/sshd_config。里面的Subsystem sftp设置是用来定义SFTP服务器的。默认情况下,这个配置应该是存在的,并且指向正确的sftp-server路径。如果这个配置缺失或者路径错误,SFTP服务可能无法正常工作,导致用户无法通过SFTP连接。 用户提到的问题是两个:1. Subsystem sftp配置缺失;2. sftp-server路径为空。我需要分步骤思考如何处理这两个问题。 首先,检查当前的sshd_config文件。用户可能需要以root权限编辑这个文件。例如使用sudo vi /etc/ssh/sshd_config或者sudo nano /etc/ssh/sshd_config。找到Subsystem sftp这一行。如果不存在,就需要手动添加。 默认的配置行应该是这样的:Subsystem sftp /usr/lib/openssh/sftp-server。不过,不同的Linux发行版路径可能不同。比如,有些系统可能将sftp-server放在/usr/libexec/openssh/下,或者其他的lib目录中。因此,用户需要确认sftp-server的实际路径是否正确。可以使用find或者locate命令来查找sftp-server的位置,例如:find / -name sftp-server 2>/dev/null。 如果路径确实正确,但配置行缺失,那么添加正确的Subsystem行即可。如果路径不正确,需要修正路径。比如,如果sftp-server实际在/usr/libexec/openssh/sftp-server,那么配置行应该改为这个路径。 此外,修改配置文件后需要重启SSH服务,例如使用systemctl restart sshd或者service ssh restart,这取决于系统使用的init系统。 另外,用户提到的引用中有关于systemctl的Type设置,可能与服务启动有关。但当前的问题更直接的是配置文件的正确性,不过如果SSH服务在重启时有问题,可能需要检查服务配置。不过这可能属于另一个问题,暂时先集中在Subsystem sftp配置上。 还需要注意权限问题。确保sshd_config文件的权限是正确的,通常是644,所有者是root。如果权限不对,可能导致SSH服务拒绝读取配置。 用户可能遇到的错误包括连接SFTP时被拒绝,或者日志中出现相关错误信息。检查SSH的日志(如/var/log/auth.log或/var/log/secure)可以帮助确认问题。 总结处理步骤: 1. 备份原始配置文件。 2. 编辑sshd_config,添加或修正Subsystem sftp行。 3. 确认sftp-server的路径正确。 4. 重启SSH服务。 5. 测试SFTP连接,查看日志确认问题是否解决。 在用户提供的引用中,引用[2]提到了修改ssh.service的Type为simple来解决systemctl超时问题,这可能与SSH服务启动有关,但当前问题主要是配置缺失,所以可能需要先处理配置问题。其他引用涉及密钥复制和root登录,可能与当前问题关联不大,但需要注意权限问题是否影响SFTP服务,例如用户目录的权限是否正确,.ssh目录权限是否为700,authorized_keys文件权限是否为600等,但这些属于SSH通用配置,不一定直接关联到Subsystem sftp配置。 可能的错误情况:如果用户修改了配置文件但忘记重启SSH服务,改动不会生效。或者路径错误,导致sftp-server无法被找到,此时SSH服务可能在启动时报错,或者在连接时出现错误信息。 另外,某些系统可能使用内部SFTP实现,比如使用libexec目录下的sftp-server,或者使用其他替代方案,比如ProFTPD的SFTP模块,但这种情况较少见。大多数情况下,OpenSSH自带sftp-server。 最后,可能需要指导用户如何测试SFTP连接是否成功,例如使用sftp命令或FileZilla等客户端进行测试,并查看日志文件以确认服务是否正常运行。</think>### 解决SSH配置文件中`Subsystem sftp`配置缺失且`sftp-server`路径为空的问题 #### 1. **确认问题现象** - **症状**:SFTP服务无法启动,连接时报错(如`Connection closed`或`subsystem request failed`)。 - **日志定位**:查看SSH服务日志验证错误原因: ```bash journalctl -u sshd --since "5 minutes ago" | grep sftp ``` 若输出包含`Bad subsystem 'sftp'`或`Cannot load specified sftp subsystem`,则表明配置异常[^2]。 --- #### 2. **修复`Subsystem sftp`配置** - **定位配置文件**: SSH服务的主配置文件为`/etc/ssh/sshd_config`,需以root权限编辑: ```bash sudo nano /etc/ssh/sshd_config ``` - **添加或修正配置项**: 在文件中搜索`Subsystem sftp`,若缺失或路径为空,添加以下行(根据实际路径调整): ```bash Subsystem sftp /usr/libexec/openssh/sftp-server ``` **注意**:不同发行版的`sftp-server`路径可能不同,需通过以下命令验证路径: ```bash find / -name sftp-server 2>/dev/null # 例如可能位于/usr/lib/openssh/sftp-server ``` --- #### 3. **验证配置并重启服务** - **语法检查**: 避免因配置错误导致SSH服务无法启动: ```bash sshd -t ``` 若输出无报错,继续下一步。 - **重启SSH服务**: ```bash sudo systemctl restart sshd # Systemd系统 # 或 sudo service ssh restart # SysVinit系统 ``` --- #### 4. **测试SFTP功能** - **本地连接测试**: ```bash sftp localhost ``` 若成功登录并显示`sftp>`提示符,则配置生效。 - **客户端测试**: 使用FileZilla或`scp`命令连接服务器,验证文件传输是否正常。 --- #### 5. **高级排查(若仍失败)** - **检查SELinux/AppArmor限制**: 安全策略可能阻止SSH加载`sftp-server`: ```bash # 临时禁用SELinux(调试用) sudo setenforce 0 # 查看审计日志 sudo ausearch -m avc -ts recent ``` 若日志显示`sftp-server`被阻止,需添加策略规则或调整文件标签[^4]。 - **验证文件权限**: 确保`sftp-server`二进制文件可执行且SSH服务有权访问: ```bash ls -l /usr/libexec/openssh/sftp-server # 权限应为755(-rwxr-xr-x) ``` - **替代方案(自定义Subsystem)**: 若路径不可用,可指定其他SFTP实现(如`internal-sftp`): ```bash Subsystem sftp internal-sftp # 使用OpenSSH内置的SFTP模块 ``` --- ### 关键操作总结 | 步骤 | 命令/操作 | 说明 | |--------------------|---------------------------------------------|---------------------------------------| | 定位配置文件 | `sudo nano /etc/ssh/sshd_config` | 编辑SSH主配置文件 | | 添加Subsystem配置 | `Subsystem sftp /path/to/sftp-server` | 根据实际路径修正 | | 重启服务 | `sudo systemctl restart sshd` | 应用配置更改 | | 测试连接 | `sftp localhost` | 验证SFTP功能是否恢复 | --- ### 相关问题 1. 如何为特定用户组限制SFTP访问? 2. SFTP与SCP协议的主要区别是什么? 3. SSH配置文件`sshd_config`中`ChrootDirectory`的作用及配置方法? [^2]: SSH服务配置与日志分析 [^4]: SELinux策略对SSH服务的影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值