架设配置sftp服务器

架设sftp服务器

报错无法登录问题:

packet_write_wait: Connection to 10.8.33.126 port 22: Broken pipe
Couldn 't read packet: Connection reset by peer

下面安装步骤整理记录:

情况一:从新增用户开始

先新增一个用户组,提供给 sftp 用户

$ sudo groupadd sfptusers

新增 sftp 的用户

$ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin codetub
$ sudo passwd codetub

确认一下用户是否正确添加

$ grep codetub /etc/passwd
codetub:x:1001:1001::/incoming:/sbin/nologin

如果用户已经添加好,可以使用指令 usermod 来更改使用者的所在 home 主目录, 和限制登录

$ sudo usermod -g sftpusers -d /incoming -s /sbin/nologin codetub

接下来就是要设定sftp-server 了(在sshd_config 中设定, 因为它是属于ssh service 的子系统)

编辑/etc/ssh/sshd_config 档案,并且把原本的Subsystem sftp 注解掉,改成以下设定

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

指定跟目录给sftpusers 群组

如果你不希望sfptusers 群组里的使用者可以离开自己的目录,可以做以下设定,较为安全

在/etc/ssh/sshd_config 的最下方加入以下设定

Subsystem sftp internal-sftp
Match user codetub
ForceCommand internal-sftp
ChrootDirectory %h

其中:

  • Match Group sftpusers: 表示下面的设定都是针对属于sftpusers群组里的使用者
  • ChrootDirectory /sftp/ %u : 这个路径是用来给通过认证的使用者, 例如使用者codetub的家目录就会是在/sftp/codetub
  • ForceCommand internal-sftp : 这个是强制使用internal-sftp 的执行命令,并且忽略掉所有~/.ssh/rc 档案里面的任何指令

建立sftpuser 的root 目录/home/sftp/codetub

$ sudo mkdir -p /home/sftp/codetub

如此一来,/home/sftp/codetub就等同于codetub 的根目录/
接着要建立一个资料夹让sftp user 可以上传档案的目录incoming

$ sudo mkdir /home/sftp/codetub/incoming

针对目录设定适当的权限

  • 将incoming 的目录权限设定给codetub

    $ sudo chown codetub:sftpusers /home/sftp/codetub/incoming/
    
  • 确认一下是否有设定正确

    确认sftpuser 的目录权限

    $ ls -ld /home/sftp/codetub/incoming/
    drwxr-xr-x 2 codetub sftpusers 4096 7月26 22:34 /home/sftp/codetub/incoming/
    
  • [重点来了]这个地方就是我卡最久的地方,因为根目录的权限必须是root 所拥有的,否则就会发生一直无法登入的情况(错误讯息如下)

无法登入的讯息
packet_write_wait: Connection to 10.8.33.126 port 22: Broken pipe
Couldn 't read packet: Connection reset by peer

所以这里一定要格外注意, 下面这两个目录的拥有者都必须是root并且权限设定也都必须是755 (也就是drwxr-xr-x)

确认根目录的权限
$ ls -ld /home/sftp/codetub/
drwxr-xr-x 3 root root 4096 7月26 22:34 /home/sftp/codetub/
$ ls -ld /home/sftp/
drwxr-xr-x 3 root root 4096 7月26 22:06 /home/sftp/

重新启动ssh 就大功告成了

$ sudo service sshd restart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值