网上找了好多,测试了半天,总结一下
1:创建用户
useradd test
2:设置密码
passwd test
输入之后会跳出下面的参数,输入自己的密码
New password:123456
BAD PASSWORD: The password is a palindrome
Retype new password: 123456
3:修改sshd配置文件
vim /etc/ssh/sshd_config
(没有vim用vi也一样)
从第137行开始覆盖(如果之前没有修改过,大多数文件内容都是一样的,如果不一样,就找到#override default of no subsystems这句话,开始覆盖:弃用,往下看)
#override default of no subsystems
#这行注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
#Example of overriding settings on a per-user basis
#Match User anoncvs
#X11Forwarding no
#AllowTcpForwarding no
#PermitTTY no
#ForceCommand cvs server
Subsystem sftp internal-sftp
#输入你的用户名 我的是test
Match User test
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
#输入可以访问的目录
ChrootDirectory /test
#这行注释掉
#UseDNS no
#这行注释掉
#AddressFamily inet
#这行注释掉
#SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication yes
2020-12-29 更新:经过测试发现,这个时候root用户竟然也无法登录了…百度了好久,虽然可以解决登录的问题,但是新建子账号依然无法用root登录,经过反思在上面的参数基础上,在加入root账户访问权限就可以了
如下:
Match User root
ChrootDirectory /
所以此时的完整参数是:
# override default of no subsystems
#Subsystem sftp /usr/libexec/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
Subsystem sftp internal-sftp
Match User test
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /test
Match User root
ChrootDirectory /
#UseDNS no
#AddressFamily inet
#SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication yes
4:重启ssh服务
systemctl restart sshd
重启成功是什么都不返回的,如果返回来就是配置文件报错了
5:创建目录
mkdir /test
chown -R root:test /test
chmod -R 750 /test
切记这块的主目录必须是root:test
6、此时就可以登录了,但是---------这个时候只是能访问该文件夹,还不能做任何操作,所以需要在test文件夹下在创建一个文件夹,且给对应权限;
mkdir /test/test
chown -R test:test /test/test
chmod -R 755 /test/test
切记权限只能给到755,否则连接不上
这个时候就可以在test/test的文件夹下进行操作了
测试:
sftp test@xxx.xxx.xxx.xxx
输入密码
test@8.131.240.89's password: 123456
sftp> cd test/
sftp> mkdir 123