用openssh/sftp实现远程文件传输控制
Posted 码农恋码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用openssh/sftp实现远程文件传输控制相关的知识,希望对你有一定的参考价值。
客服端:winscp等ftp/sftp客户端
服务器:阿里云默认使用的openssh
需求:可以sftp远程传输文件到服务器固定文件夹下,不可远程ssh登录
步骤:
1. 建立系统用户ftpuser及组ftpgroup
useradd ftpuser
groupadd ftpgroup
2. 设置ftpuser密码
passwd ftpuser
然后输入密码
3. 设置ftpuser远程不能ssh登录
usermod -s /bin/false ftpuser
可以cat /etc/passwd查看系统用户的登录情况及主目录
4. 修改ftpuser主目录
usermod -d /mnt/xxx/
或者3、4步,统一用usermod -M -d /mnt/xxx/ -s /bin/false ftpuser
5. 编辑ssh配置文件,指定用户及目录
nano /etc/ssh/sshd_config,注释默认的Subsystem和UsePAM,并在最末尾添加以下几行(红字的)
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes
#--- 在UseDNS no这一行的下一行添加以下几行,不然报错,服务无法重启
Subsystem sftp internal-sftp
UsePAM yes
Match User ftpuser
ForceCommand internal-sftp
ChrootDirectory /mnt/xxx
AllowUsers root ftpuser #我用系统的sshd控制ssh远程登录,故也把ftpuser放入AllowUsers列表。
6. 重启sshd服务
service sshd restart
7. 测试ftpuser的ssh和sftp登录情况
ssh无法登录
sftp可以,默认列出/mnt/xxx文件夹
注意:
•ftpuser的用户目录和ssh配置文件里的目录一致
•ssh目录权限及所有者必须是755/root(上级目录所有者为root,组内不能是可写权限,否则fatal: bad ownership or modes for chroot directory "/mnt/xxx")
•ftpuser得usermod里禁止ssh登录是/bin/false而不是/sbin/bash/nologin (nologin是禁止了ssh和sftp)
参考:
http://blog.csdn.net/qq_35440678/article/details/52788808
https://www.cnblogs.com/xjnotxj/p/6912471.html
http://blog.csdn.net/kenight/article/details/36669679
以上是关于用openssh/sftp实现远程文件传输控制的主要内容,如果未能解决你的问题,请参考以下文章
OpenSSH sftp 'put' 在源文件夹上是不是带有斜杠?