一、sftp服务端上的配置
1.创建用户(以test为例)
useradd -s /sbin/nologin -d /home/test test
修改密码
passwd test
2.创建相关目录
mkdir /home/test
chmod 755 /home/test(必须为755)
chown root:root test(目录属主必须是root)
mkdir /home/test/send
mkdir /home/test/recv
目前目录的属主为root,权限为777
chmod 750 /home/test/send
chmod 750 /home/test/recv
chown test /home/test/send
chown test /home/test/recv
3.修改配置文件
cd /etc/ssh
vi sshd_config
注释下列内容:
#Subsystem sftp /usr/lib64/ssh/sftp-server
在最后添加下列内容
#配置外部子系统
Subsystem sftp internal-sftp
#引入一个条件块。块的结尾标志是文件结尾
Match User test
ChrootDirectory /home/test(注意必须在上一层,否则会报错connection reset by peer)
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
4.重启服务,使配置文件生效
/etc/init.d/sshd stop
/etc/init.d/sshd start
systemctl restart sshd.service(Suse12 下命令)
sftp test@localhost(测试验证下用户)
5.生成密钥
ssh-keygen -t rsa(生成公私钥)
在/root/.ssh/下生成两个文件: id_rsa; id_rsa.pub
id_rsa为私钥文件,id_rsa.pub为公钥文件。
在/home/test执行
mkdir .ssh
chown test .ssh
chmod 700 .ssh
cd .ssh
cp /root/.ssh/id_rsa.pub ./authorized_keys
chmod 644 authorized_keys
重新启动ssh
service sshd restart(Suse11)
systemctl restart sshd.service(Suse12下命令)
二、客户端配置
把id_rsa私钥文件放到客户端服务器/home/test/下修改属性为600
将服务端生成的id_rsa文件拷贝至客户端机器,使用以下命令即可登录
sftp -oIdentityFile=/home/test/id_rsa test@服务端ip