Linux下sftp服务器配置之密钥方式登录
2017-07-05 09:27:07  By: dwtedx

由于vsftp采用明文传输、用户名密码可通过抓包得到、为了安全性、需使用sftp、锁定目录且不允许sftp用户登到服务器、由于sftp使用的是ssh协议、需保证用户只能使用sftp、不能ssh到机器进行操作、且使用密钥登陆、不是22端口


1. 创建sftp服务用户组,创建sftp服务根目录

groupadd sftp


#此目录及上级目录的所有者必须为root、权限不高于755、此目录的组最好设定为sftp

mkdir /data/sftp
chown -R root:sftp /data/sftp
chmod -R 0755 /data/sftp


2. 修改sshd配置文件

cp /etc/ssh/sshd_config,_bk}  #备份配置文件
sed -i ´s@#Port 22@Port 22@´ /etc/ssh/sshd_config  #保证原来22端口可以
vi /etc/ssh/sshd_config


注释掉/etc/ssh/sshd_config文件中的此行代码

Subsystem      sftp    /usr/libexec/openssh/sftp-server


添加如下代码

Port 2222
Subsystem sftp internal-sftp -l INFO -f AUTH
Match Group sftp
ChrootDirectory /data/sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -f AUTH


凡是在用户组sftp里的用户、都可以使用sftp服务;使用sftp服务连接上之后、可访问目录为/data/sftp/username

举个例子

test是一个sftp组的用户、它通过sftp连接服务器上之后、只能看到/data/sftp/test目录下的内容

test2也是一个sftp组的用户、它通过sftp连接服务器之后、只能看到/data/sftp/test2目录下的内容


3. 创建sftp用户

#此例将创建一个名称为test的sftp帐号

#创建test sftp家目录:test目录的所有者必须是root、组最好设定为sftp、权限不高于755

mkdir /data/sftp/test
chmod 0755 /data/sftp/test
chown root:sftp /data/sftp/test
useradd -g sftp -s /sbin/nologin test  #添加用户、参数-s /sbin/nologin禁止用户通过命令行登录


创建test用户密钥对

# mkdir /home/test/.ssh
# ssh-keygen -t rsa
# cp /root/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys
# chown -R test.sftp /home/test


在test目录下创建一个可以写的upload目录

mkdir /data/sftp/test/upload
chown -R test:sftp /data/sftp/test/upload


注:sftp服务的根目录的所有者必须是root、权限不能超过755(上级目录也必须遵循此规则)、sftp的用户目录所有者也必须是root,且最高权限不能超过755


4. 测试sftp

service sshd restart


test用户密钥登陆如下图

sftp命令


若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+