前言:sftp是生产环境中经常用到的工具,本文介绍了2种sftp登录方式,推荐使用第二种更加安全。
一、使用密码验证方式
1、创建用户组sftp
groupadd sftp
2、创建用户sftp
useradd -g sftp -s /sbin/nologin -M sftp
#-g 加入到sftp组
#-s 禁止ssh登陆
#-M 不要自动建立用户的登陆目录(在/home下)
3、设置sftp账户密码
echo sftp |passwd --stdin sftp
4、创建账户sftp根目录test
mkdir -p /data/sftp/test
chmod 755 /dala/sftp
chown -R sftp:sftp /data/sftp/test
5、编辑sshd配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
#备份留作还原
sed -i 's/^Subsystem.*sftp.*$/# &/g' /etc/ssh/sshd_config
#注释掉Subsystem sftp /usr/libexec/openssh/sftp-server
cat >>/etc/ssh/sshd_config<<EOF
Subsystem sftp internal-sftp
Match User sftp
#匹配用户sftp
ChrootDirectory /data/sftp
# 指定根目录
X11Forwarding no
# 禁用X11图形界面转发
AllowTcpForwarding no
# 禁用端口转发
ForceCommand internal-sftp
# 强制执行内部SFTP,并忽略任何~/.ssh/rc中的命令
EOF
service sshd restart
```bash
权限说明:
sftp的根目录是/data/sftp,属于root用户,权限755
也就是说sftp用户对于它的根目录有查看和进入权限,无写权限
sftp的家目录是/data/sftp/test,对其有全部的权限
目录/data/sftp相当于/home,目录/data/sftp/test相当于/home/test
将目录切换锁在了/home之内,不能做根的跳转
注:如新增sftp用户就在配置sshd配置文件中添加相同的配置文件,操作步骤和上面一致。
二、使用rsa认证方式登录
1、创建账户xuboy
useradd -g sftp -s /sbin/nologin xuboy
#注意这里不要 -M , 因为我们需要useradd为新增用户在/home目录下自动建立用户的登陆目录
2、在/home/xuboy目录下设置密钥文件
cd /home/xuboy/
ll -a
#可看到所有隐藏目录
mkdir .ssh
#存放密钥文件和认证文件
ssh-keygen -t rsa
#使用rsa算法生成私钥和公钥
/home/xuboy/.ssh/id_rsa_xuboy
#密钥保存目录,如下
3、往authorized_keys文件中写入公钥key
cat /home/xuboy/.ssh/id_rsa_xuboy.pub >> authorized_keys
4、权限设置
chmod 600 /home/xuboy/.ssh/authorized_keys
chmod 700 /home/xuboy/.ssh
chown -R xuboy:sftp /home/xuboy/.ssh
5、修改sshd配置
cat >>/etc/ssh/sshd_config<<EOF
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ss:/home/xuboy/.ssh/authorized_keys
EOF
service sshd restart
6、使用filezile测试
测试ok~