Openssh功能概述
- OpenSSH 是 SSH (Secure SHell) 协议的免费开源软件
- 软件安装名称:Openssh-server
- 配置文件:/etc/ssh/sshd_conf
- 默认端口:22
- 客户端命令:ssh
- 实验环境:
ip | 对应主机 |
---|---|
172.25.254.22 | workstation (客户端) |
172.25.254.11 | rhel8(服务端) |
172.25.254.17 | 真机(跳板) |
此时两两之间相互都能ping通
为了实验环境的纯净,提前删除/root/.ssh
文件
ssh命令的用法
sshd= secure shell可以通过网络在主机中开启shell的服务
1.连接方式:
命令 | 作用 |
---|---|
ssh username@ip | 文本模式的链接 |
ssh -X username@ip | 可以在链接成功后开机图形 |
注意:
第一次链接陌生主机时要建立认证文件
所以会询问是否建立,需要输入yes
再次链接此台主机时,因为已经生成~/.ssh/know_hosts文件所以不需要再次输入yes
2.ssh命令
参数 | 作用 |
---|---|
-l | 指定登陆用户 |
-i | 指定密钥 |
-x | 开启图形 |
-p | 指定端口 |
-f | 后台运行 |
-o | 指定连接参数 |
-t | 指定连接跳板 |
练习:
- 指定登陆用户
在rhel8(172.25.254.11)上可以查看连接信息
- 开启图形
- 后台运行(可使用进程查看)
- 指定连接参数,可使用man ssh查询
- 指定连接跳板
workstation:172.25.254.22
rhel8:172.25.254.11
真机:172.25.254.17 (跳板)
Openssh服务的key认证
1.Openssh认证方式
密码认证 | 密钥认证 |
---|---|
至少6个字符 | 新型认证方式,分为公钥及私钥 |
包含数字,字母,下划线特殊符号等 | 公钥上传服务器 |
易泄漏 | 私钥配对认证,不会被盗用 |
可被暴力破解 | 攻击者一般无法通过密钥登录服务器 |
密码容易丢失 | / |
公钥及私钥理解:公钥可以理解为锁头;私钥可以理解为钥匙
2.Openssh KEY(支持rsa及dsa加密)
- 生成密钥
ssh-keygen
- 上传密钥
ssh-copy-id –i keyfile remoteUSER@remoteIP
3.关于Openssh的文件
文件 | 功能 |
---|---|
~/.ssh/authorized_keys | 用于保存用户的公钥文件 |
~/.ssh/known_hosts | 辨别服务器的唯一散列码 |
~/.ssh/id_dsa | 用户的私钥文件 |
~/.ssh/id_rsa.pub | 用户的公钥文件 |
注意:authorized_keys不可自己改变,随意改变内容或名称后,免密认证就会失效
4.练习
- 生成认证KEY
[root@workstation ~]# ssh-keygen ##生成密钥的命令
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##指定保存加密字符的文件(使用默认)
Enter passphrase (empty for no passphrase): ##设定密码(使用空密码)
Enter same passphrase again: ##确认密码
Your identification has been saved in "/root/.ssh/id_rsa". ##私钥(钥匙)
Your public key has been saved in "/root/.ssh/id_rsa.pub". ##公钥(锁)
The key fingerprint is:
SHA256:MjWWf2+fTOC9xJ4TWaw46xwUSqJjZsxEJ6pgFrHwO48 root@workstation.westos.com
The key's randomart image is:
+---[RSA 2048]----+
|.o. o . |
|..o o o . |
|.+. . . * . . . |
|o. o + + = . . o|
| + @ S o oo .o|
| + + + o+.=o |
| E . .+o=.|
| ..o=o+|
| .o *o|
+----[SHA256]-----+
- 加密服务
[root@workstation .ssh]# ls
id_rsa id_rsa.pub known_hosts
[root@workstation .ssh]# ssh-copy-id -i id_rsa.pub [email protected] ##加密sshd服务
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.25.254.11's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@172.25.254.11'"
and check to make sure that only the key(s) you wanted were added.
[root@workstation .ssh]#
- authorized_keys的出现表示加密完成
[root@rhel8 .ssh]# ls
authorized_keys known_hosts
注意:rhel8中authorized_keys的内容,与workstation中公钥id_rsa.pub的内容一致
- 测试
在客户主机中(172.25.254.22)ssh [email protected]
连接时发现直接登陆不需要root登陆系统的密码认证
5.分发钥匙给真机
- 将登陆11的密钥发给真机
详解Linux系统中的文件传输优化(scp命令,rsync命令与文件的归档压缩)
[root@workstation ~]# scp /root/.ssh/id_rsa [email protected]:/root/.ssh
root@172.25.254.17's password:
Permission denied, please try again.
[email protected]'s password:
id_rsa 100% 1831 2.3MB/s 00:00
[root@workstation ~]#
- 真机测试
注意:此时我们可以发现kiosk没有免密,root用户可以免密。这是因为我们将密钥发送给的是[email protected]而不是[email protected]
sshd服务常用相关配置参数
1.配置文件
/etc/ssh/sshd_config
2.配置参数
参数 | 作用 |
---|---|
Port 22 | 监听端口 |
Protocol 2 | 指定协议版本 |
ListenAddress | 绑定IP |
HostKey | 设定HostKey密钥路径 |
PermitRootLogin | 设定超级用户是否能登录 |
PubkeyAuthentication | 公钥认证开关 |
PasswordAuthentication | 密码认证开关 |
AllowUsers | 用户白名单 |
DenyUsers | 用户黑名单 |
3.sshd的安全设定
修改配置文件vim /etc/ssh/sshd_config
【1】PasswordAuthentication yes|no
表示是否允许用户通过登陆系统的密码做sshd的认证
当设置为no时,没有密钥的主机就不能通过输入密码来进行登陆
【2】PermitRootLogin yes|no
是否允许root用户通过sshd服务的认证
- 当设置为yes,允许root用户通过认证(使用student与root用户进行对比)
- 当设置为no可用student用户登陆,超级用户被限制了
【3】下述黑白名单实验前提
- 此时可以看出rhel8中有哪些用户
- 在workstation中,此时都可以
【4】Denyusers westos
设定用户黑名单,默认不在黑名单中的用户可以使用sshd
【5】Allowusers student westos
设定用户白名单,只有在白名单的用户才可以使用sshd