Linux 下ssh sftp配置之密钥方式登录详解 - Go语言中文社区

Linux 下ssh 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 22222 #此处改为非22端口

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

# ssh-copy-id test@IP ##要远程的目标服务器IP和账户

# chown -R test.sftp /home/test

另外我们要注意,.ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600。否则会因为权限问题导致无法免密码登录。我们可以看到登陆后会有known_hosts文件生成。

在目标远程服务器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

systemctl restart sshd.service

test用户密钥登陆:

 

1

sftp test@IP ##在本地sftp登陆远程服务器

 

另外,将公钥拷贝到服务器的~/.ssh/authorized_keys文件中方法有如下几种:
1、将公钥通过scp拷贝到服务器上,然后追加到~/.ssh/authorized_keys文件中,这种方式比较麻烦。scp -P 22 ~/.ssh/id_rsa.pub user@host:~/。
2、通过ssh-copy-id程序,就是我演示的方法,ssh-copyid user@host即可
3、可以通过cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat >> ~/.ssh/authorized_keys’,这个也是比较常用的方法,因为可以更改端口号。

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_23598037/article/details/79766085
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-24 22:12:06
  • 阅读 ( 1569 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢