Linux 下sftp配置之密钥方式登录详解
这篇文章主要介绍了Linux 下sftp配置之密钥方式登录详解的相关资料,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器,需要的朋友可以参考下
linux下sftp配置之密钥方式登录
由于vsftp采用明文传输,用户名密码可通过抓包得到,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器。由于sftp使用的是ssh协议,需保证用户只能使用sftp,不能ssh到机器进行操作,且使用密钥登陆、不是22端口。
1. 创建sftp服务用户组,创建sftp服务根目录
1
|
groupadd sftp |
#此目录及上级目录的所有者必须为root,权限不高于755,此目录的组最好设定为sftp
1
2
3
|
mkdir /data/sftp chown -r root: sftp /data/sftp chmod -r 0755 /data/sftp |
2. 修改sshd配置文件
1
2
|
cp /etc/ssh/sshd_config ,_bk} #备份配置文件 sed -i 's@#port 22@port 22@' /etc/ssh/sshd_config #保证原来22端口可以 |
1
|
vi /etc/ssh/sshd_config |
注释掉/etc/ssh/sshd_config文件中的此行代码:
1
|
subsystem sftp /usr/libexec/openssh/sftp-server |
添加如下代码:
1
2
3
4
5
6
7
|
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
1
2
3
4
|
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用户密钥对:
1
2
3
4
|
# 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目录
1
2
|
mkdir /data/sftp/test/upload chown -r test : sftp /data/sftp/test/upload |
注:sftp服务的根目录的所有者必须是root,权限不能超过755(上级目录也必须遵循此规则),sftp的用户目录所有者也必须是root,且最高权限不能超过755。
4. 测试sftp
1
|
service sshd restart |
test用户密钥登陆如下图:
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!