Linux运维学习--sshd服务
一、sshd服务1.简介:sshd = secure shell,是可以通过网络在主机中开启shell的服务2.连接方式:sshusername@ip##文本模式的链接ssh-Xusername@ip##可以在连接成功后开机图形注意:第一次连接陌生主机需要建立认证文件(/root/.ssh/know_hosts)所以会询问是否建立,需要输入yes3.虚拟机网络的配...
一、sshd服务
1.简介:
sshd = secure shell,是可以通过网络在主机中开启shell的服务
2.连接方式:
ssh username@ip ##文本模式的链接
ssh -X username@ip ##可以在连接成功后开机图形
注意:
第一次连接陌生主机需要建立认证文件(/root/.ssh/know_hosts)
所以会询问是否建立,需要输入yes
3.虚拟机网络的配置以及服务控制参见:
二、sshd 的key认证
1.生成认证KEY
使用以下命令可以生成密钥
ssh-keygen ##生成密钥
- 指定保存加密字符的文件(使用默认)
- 设定密码(使用空密码)
- 也可以使用一句命令:
ssh-keygen -f /root/.ssh/id_rsa -P ""
示例:
可以查看/root/.ssh/来确认密码:
图中:id_rsa为私钥(钥匙)id_rsa.pub为公钥(锁)
2.公钥加密主机
使用命令:
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.216 ##输入密码确认,使用公钥加密216主机
示例:
查看是否加密成功:
ls /root/.ssh/ 查看是否有 authorized_keys 文件,如果有表示加密成功
由图可得,216主机已加密成功
3.更改配置文件:
vim /etc/ssh/sshd_config ##将78行的yes改成no 表示关闭密码登陆

4.分发钥匙
为主机116分发钥匙:
scp /root/.ssh/id_rsa root@172.25.254.116:/root/.ssh/

5.测试
在客户端主机中(172.25.254.116):
ssh root@172.25.254.216 ##连接时发现直接登陆不需要root登陆系统的密码认证

发现直接登陆不需要root登陆系统的密码认证
三、sshd的安全设定
sshd的安全设定保存在/etc/ssh/sshd_config文件中
(1)更改端口以指定端口号登陆
1.关闭selinux防火墙
setenforce是Linux的selinux防火墙配置命令, 执行setenforce 0 表示关闭selinux防火墙
执行getenforce返回Permissive表示selinux防火墙已关闭
2.关闭系统防火墙
使用以下命令关闭系统防火墙
systemctl stop firewalld

3.查看现在端口
netstat -antlupe | grep sshd

可以看出现在的端口是22
4.更改配置文件
更改/etc/ssh/sshd_config文件中端口信息
vim /etc/ssh/sshd_config
将文件中17行的端口信息改变:
改为:
5.重启sshd服务
重启sshd服务以使更改的配置文件生效:
systemctl restart sshd.service
重启后查看端口,发现端口变为9999
6.测试
使用另一台主机登陆该主机:
使用默认端口22无法登陆主机216,使用参数-p指定端口9999登陆:
ssh root@172.25.254.216 -p 9999 ##指定端口号登陆

发现可以登陆
(2) 更改允许登陆的ip
1.更改配置文件
更改/etc/ssh/sshd_config文件中19行中的ListenAddress字段,默认为:

0.0.0.0表示开启所有ip的接口
修改为:
表示只开启ip为172.25.254.216的接口
注意:每次更改配置文件后都需要重启服务以使更改生效
2.测试
查看216主机的网络情况发现可以使用172.25.254.216和127.0.0.1两个ip登陆该主机:
更改配置文件和重启服务后使用ip为127.0.0.1的接口登陆216主机:
显示Connection refused
使用ip为172.25.254.216的接口登陆216主机:
成功登陆
(3)设置是否允许使用ssh命令登陆root用户
1.修改配置文件
更改/etc/ssh/sshd_config文件中48行中的PermitRootLogin字段,默认为yes表示允许:
修改为no:
保存后重启服务
2.测试
修改配置文件后尝试登陆root用户,即使密码输入正确也无法登陆:
尝试登陆其他用户即可成功:
(4)设置用户白名单
设置白名单,表示只允许ssh命令登陆指定用户
1.修改配置文件
更改/etc/ssh/sshd_config文件中写入AllowUsers字段:
AllowUsers leo ##设置白名单,表示只允许ssh命令登陆leo用户

保存后重启服务
2.测试
使用ssh命令登陆leo用户发现可以登陆:
登陆其他用户发现不能登陆:
(5)设置用户黑名单
1.修改配置文件
更改/etc/ssh/sshd_config文件中写入DenyUsers字段:
DenyUsers leo ##设置用户黑名单,表示不允许使用ssh命令登陆leo用户

保存后重启服务
2.测试
使用ssh命令登陆leo用户发现无法登陆:
登陆其他用户可成功登陆:
四、scp与rsync
(一)scp命令
scp命令可以实现远程主机之间的文件复制
1.命令格式:
scp [参数] [原路径] [目标路径]
2.常用参数:
-r:复制目录时使用-P:大写的P指定端口
前面的内容中发送私钥以及复制文件都用到了该命令
示例:
上传文件:
上传目录:
下载目录:
(二)rsync远程同步命令
1.rsync命令
rsync 是 remote sync 的缩写,用于linux系统下的数据镜像备份工具,远程服务器之间的文件拷贝,用法与作用与scp命令基本一致,但是速度比scp快,默认忽略一些东西
2.rsync命令格式
rsync [OPTION] SRC DEST
rsync [OPTION] SRC [USER@]HOST:DEST
rsync [OPTION] [USER@]HOST:SRC DEST
rsync [OPTION] [USER@]HOST:SRC DEST
rsync [OPTION] SRC [USER@]HOST:DEST
其中:SRC:源文件或目录DEST:目标文件或目录USER@:目标用户,不加默认为root。HOST:远程主机IP
3.rsync命令参数
| 参数 | 含义 |
|---|---|
| -a | 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一个 --no-OPTION 这个表示关闭-rlptgoD中的某一个例如 -a–no-l 等同于-rptgoD |
| -r | 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项 |
| -v | 打印一些信息出来,比如速率,文件数量等 |
| -l | 保留软链接 |
| -L | 向对待常规文件一样处理软链结,如果是SRC中有软连接文件,则加上该选项后将会把软连接指向的目标文件拷贝到DST |
| -p | 保持文件权限 |
| -o | 保持文件属主信息 |
| -g | 保持文件属组信息 |
| -D | 保持设备文件信息 |
| -t | 保持文件时间信息 |
| - -delete | 删除那些目标目录中原目录没有的文件 |
| - -exclude = PATTERN | 指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt) |
| - -progress | 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等 |
| -u | 加上这个选项后将会把目标目录中比原目录还新的文件排除掉,不会覆盖 |
(三)scp与rsync的区别
scp是相当于复制,黏贴,如果有的话是覆盖,比较耗时间,不智能。rsync是复制,如果有重复的文件,会直接跳过,而且他自己的算法优化scp是把文件全部复制过去,当文件修改后还是把所有文件复制过去,rsync
第一次是把所有文件同步过去,当文件修改后,只把修改的文件同步过去
更多推荐




所有评论(0)