Openssh功能介绍
- OpenSSH 是 SSH (Secure SHell) 协议的免费开源软件
- 软件安装名称 : Openssh-server
- 配置文件:/etc/ssh/sshd_conf
- 默认端口:22
- 客户端命令:ssh
可以看到,我们当前系统安装了openssh-server
本实验需要两台主机,我们选择workstation和真机作为服务端和测试端。
真机(客户端)可以连接上workstation(服务端)。
由于真机配置不能动(太菜),我们删去workstation的隐藏配置文件.ssh,用workstation登陆真机:
连接失败,推测真机中防火墙开启。在真机里关闭防火墙:
此时workstation正常连接:
ssh命令
- ssh 远程主机用户@远程主机ip
- ssh -l 远程主机用户 远程主机ip
ssh | 功能 |
---|---|
-l | 指定登录用户 |
-i | 指定密钥 |
-x | 开启图形 |
-p | 指定端口 |
-f | 后台运行 |
-o | 指定连接参数 |
-t | 指定连接跳板 |
可以使用 w -i查看当前登陆用户:
远程连接为文本连接,不能开启图形:
使用ssh -l root 172.25.254.119 -X
来开启图形登陆
此时打开的gedit会占用终端,我们可以用ssh -l -f root 172.25.254.119 -X gedit
将gedit远程后台运行。
若修改过默认连接端口(默认端口为22)后,可以使用ssh -l root 172.25.254.119 -p 端口
来来连接指定端口。
Openssh服务的key认证
Openssh认证方式
关于实验环境:我们本次用rhel7和rhel8分别作为客户端和服务端。
rhel7 IP:192.168.0.40
rhel8 IP:192.168.0.41
密码认证
• 至少6个字符
• 包含数字,字母,下划线特殊符号等
• 易泄漏
• 可被暴力破解
• 密码容易丢失
密钥认证
• 新型认证方式,分为公钥及私钥
• 公钥上传服务器
• 私钥配对认证,不会被盗用
• 攻击者一般无法通过密钥登录服务器
Openssh KEY(密钥对的生成)
支持rsa及dsa加密
加密方法:
-
生成密钥 ssh-keygen
-
上传密钥 ssh-copy-id –i keyfile remoteUSER@remoteIP
可以看到私钥保存在/root/.ssh/id_rsa.
公钥保存在/root/.ssh/id_rsa.pub.
这里我们用密钥认证,所以没有设置密码,使用的加密字符保存在默认位置。
接着使用ssh-copy-id –i keyfile remoteUSER@remoteIP
来生成公钥:
在服务端的/root/.ssh目录下生成了authorized_keys文件
这个文件里的内容与客户端上生成的公钥文件id_rsa.pub.内容相同
远程登陆服务端:
可见实现免密登录。
但是没有密钥时登录远程服务器就需要输入密码来进入,如果来者不善,暴力破解密码,会有一定的风险。所以我们可以在服务端关闭密码认证(修改配置)
vim /etc/ssh/sshd_config
将其关闭 保存退出即可。
当服务端不想让拥有密钥的用户进入时,修改之前生成的authorized_keys文件即可。
关于Openssh的文件
文件 | 内容 |
---|---|
~/.ssh/authorized_keys | 用于保存用户的公钥文件 |
~/.ssh/known_hosts | 辨别服务器的唯一散列码 |
~/.ssh/id_dsa | 用户的私钥文件 |
~/.ssh/id_rsa.pub | 用户的公钥文件 |
Openssh服务的安全优化
sshd服务常用相关配置参数
配置文件: /etc/ssh/sshd_config
配置参数
Port 22 | 监听端口 |
Protocol2 | 指定协议版本 |
ListenAddress | 绑定IP |
HostKey | 设定HostKey密钥路径 |
PermitRootLogin | 设定超级用户是否能登录 |
PubkeyAuthentication | 公钥认证开关 |
PasswordAuthentication | 密码认证开关 |
AllowUsers 用户白名单 | DenyUsers 用户黑名单 |