SFTP+OpenSSH+ChrootDirectory设置

账户设置

SFTP的账户直接使用Linux操作系统账户,我们可以用useradd命令来创建账户。

首先建立3个要管理的目录:

 
1
2
3
mkdir /home/sftp/homepage
mkdir /home/sftp/blog
mkdir /home/sftp/pay

创建sftp组和www、blog、pay账号,这3个账号都属于sftp组:

 
1
2
3
4
5
6
7
8
9
10
11
12
groupadd sftp 
useradd -M -d /home/sftp -G sftp www
useradd -M -d /home/sftp/blog -G sftp blog
useradd -M -d /home/sftp/pay -G sftp pay
 
# 将blog账户也加到apache组
useradd -M -d /home/sftp/blog -G apache blog
 
#设置3个账户的密码密码
passwd www
passwd blog
passwd pay

至此账户设置完毕。

SSH设置

首先要升级OpenSSH的版本。只有4.8p1及以上版本才支持Chroot。

 

设置sshd_config。通过Chroot限制用户的根目录。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
vim /etc/ssh/sshd_config
#注释原来的Subsystem设置
Subsystem   sftp    /usr/libexec/openssh/sftp-server
#启用internal-sftp
Subsystem       sftp    internal-sftp
#限制www用户的根目录
Match User www
    ChrootDirectory /home/sftp
    ForceCommand    internal-sftp
#限制blog和pay用户的根目录
Match Group sftp
    ChrootDirectory %h
    ForceCommand    internal-sftp

完成这一步之后,尝试登录SFTP:

 
1
2
3
4
5
6
sftp www@abc.com
#或者
ssh www@abc.com
#如果出现下面的错误信息,则可能是目录权限设置错误,继续看下一步
#Connection to abc.com closed by remote host.
#Connection closed

权限设置

要实现Chroot功能,目录权限的设置非常重要。否则无法登录,给出的错误提示也让人摸不着头脑,无从查起。我在这上面浪费了很多时间。

目录权限设置上要遵循2点:

  1. ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
  2. ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。

如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。

 
1
2
chown root.root /home/sftp /home/sftp/homepage /home/sftp/blog /home/sftp/pay
chmod 755 /home/sftp /home/sftp/homepage /home/sftp/blog /home/sftp/pay

由于上面设置了目录的权限是755,因此所有非root用户都无法在目录中写入文件。我们需要在ChrootDirectory指定的目录下建立子目录,重新设置属主和权限。以homepage目录为例:

 
1
2
3
mkdir /home/sftp/homepage/web
chown www.sftp /home/sftp/homepage/web
chmod 775 /home/sftp/homepage/web

要实现web服务器与blog账户互删文件的权限需求,需要设置umask,让默认创建的文件和目录权限为775即可。将下面的内容写入.bashrc中:

 
1
umask 0002

至此,我们已经实现了所有需要的功能。


OpenSSH SFTP是一种安全的文件传输协议,它使用SSH(Secure Shell)协议进行加密和验证。通过OpenSSH SFTP,用户可以通过网络安全地传输文件。 要在Windows上安装OpenSSH SFTP服务器,可以按照以下步骤进行操作: 1. 下载和安装WinSCP软件。WinSCP是一个免费的SFTP和FTP客户端,它还包含了一个可选的OpenSSH服务器组件。 2. 打开命令提示符(以管理员身份运行)并运行以下命令来启动OpenSSH服务器: ``` net start sshd ``` 这将自动在`%programdata%\ssh`目录下生成主机密钥,如果密钥不存在的话。 3. 找到OpenSSH服务器的配置文件`sshd_config`,它位于`C:\ProgramData\ssh`目录下,可能是隐藏的。在该配置文件的末尾添加以下内容: ``` # Add Below ForceCommand internal-sftp Match User ftpuser ChrootDirectory E:\sites\sftp # Disable tunneling, authentication agent, TCP and X11 forwarding. PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no PermitTTY no ``` 这些配置将强制使用内部的SFTP命令,并将用户`ftpuser`限制在`E:\sites\sftp`目录中。此外,它还禁用了隧道、身份验证代理、TCP和X11转发。 4. 使用SFTP客户端验证OpenSSH SFTP服务器的功能。可以使用WinSCP等客户端软件连接到服务器,并使用FTP用户凭据进行身份验证,以及进行安全的文件传输操作。 通过按照上述步骤进行操作,您可以在Windows上安装和配置OpenSSH SFTP服务器,并使用SFTP客户端进行文件传输。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [用OpenSSH 配置 SFTP 服务器 (OpenSSH for Windows)](https://blog.youkuaiyun.com/ericwuhk/article/details/108450629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值