Openssh功能概述
OpenSSH 是 SSH (Secure SHell) 协议的免费开源软件
软件安装名称 • Openssh-server
配置文件 • /etc/ssh/sshd_conf
默认端口 • 22 (可更改)
客户端命令 • ssh
ssh命令的用法
首先我们需要进行2台虚拟机进行实验,所以我们先来进行虚拟机网络配置,使两台虚拟机网络是互通的,这里以我自己的虚拟机worktation、severa 来进行实验演示:
首先在worktation中设置一块网卡
命令 nm-connection-editor 进入网络设置,点击Create进入下一步
在Connection name 后面输入你设置的网卡的名称,在 Device 一行选择网卡
前一步设置完后,点击 IPv4 Settings ,在里面Method一行后面选Manual,然后在Addresses这里点击Add,添加一行空白一次填写ip地址、Netmask,Gateway这个不填点击一下就可以,否则无法保存。ip地址根据真机的ip改一下后面的数字,真机的ip用ip addr show 命令查看
这就是我的真机的ip地址,上面设置完后Save保存就完成了
同样我配置severa的网卡设置ip设置为172.25.254.80,完成这些操作,我们需要测试两台主机之间的网络是否畅通,测试命令是 “ping IP地址”
这些都测试完后,我们开始正文实验
命令:ssh remoteUSER@remoteIP 此命令是远程连接另一台主机
ssh 用户名@主机ip地址,就可以链接过去,第一次还需要确认是否要链接输入yes即可,然后输入目标主机用户的密码就链接成功了。
我们介绍一下ssh命令的可以使用到的参数有哪些
参数 | 作用 |
---|---|
-l | 指定登录用户 |
-i | 指定密钥 |
-X | 开启图形 |
-p | 指定端口 |
-f | 后台运行 |
-o | 指定连接参数 |
-t | 指定连接跳板 |
-l参数
是另一种连接方式,也是连接其他主机,如下演示
-i参数
指定密匙是为了提高连接的安全性,创建一个独立的链接方式,避免其他人也可以随意连接,这个方式在下一节会详细说明
-X
开启连接远程主机的图形工具,例如firefox等程序
-p参数
指定端口,我们正常的端口都是22,如果端口被修改过那就需要用“-p 端口号”去指定
-f参数
[root@severa ~]# ssh -f root@172.25.254.180 -X gedit
运行图形编辑但不占用终端显示
-o参数
-o的用途有很多,所以我们可以用 “man ssh” 来查看ssh命令的用法
可以看到可以加的参数有很多,例如“StrictHostKeyChecking” 参数,我们在第一次连接其他主机时会出现验证确认需要输入yes或no,加上这个参数就可以直接略去这个步骤
实验首先删除“.ssh”文件,因为连接过一次后就不再需要验证,然后正常连接,提示需要输入yes或no,取消我们试加-o参数StrictHostKeyChecking=no,就是不再询问,然后直接跳到输入密码环节
-t参数
连接跳板,例如我现在想用severa 连接 workstation ,但是不想让对方看到是severa连接的,这是借助另一台主机来跳转连接
[root@severa ~]# ssh -t root@172.25.254.212 ssh root@172.25.254.180
命令 "w -i"可以查看谁连接了本机,所以你用其他主机作为跳板时就可以别面被发现真实的ip地址
Openssh服务的key认证
Openssh服务的key认证分为两种
密码认证:
• 至少6个字符
• 包含数字,字母,下划线特殊符号等
• 易泄漏
• 可被暴力破解
• 密码容易丢失
密钥认证:
• 新型认证方式,分为公钥及私钥
• 公钥上传服务器
• 私钥配对认证,不会被盗用
• 攻击者一般无法通过密钥登录服务器
这个环节就需要用到 “-i” 参数,给两台主机配对密匙,达到免密和更安全的连接效果,先来看命令
- 生成密钥 ssh-keygen
- 上传密钥 ssh-copy-id –i keyfile remoteUSER@remoteIP
实验操作:
我们需要3台主机来实验,分别是
- 客户端 severa 172.25.254.80
- 服务端 workstation 172.25.254.180
- 测试端 severb 172.25.254.100
第一步,在客户端里生成密匙,为了保证实验效果先删除/root/.ssh文件,再输入命令
输入命令后出现的等待输入直接回车确认即可,如果更改会产生其他大量的工作去做,完成后会告诉你identification 保存在 /root/.ssh/id_rsa;public key保存在 /root/.ssh/id_rsa.pub。其中identification是私钥,就是钥匙;public key公钥,就是锁。
ls来查看是否存在。
接下来上传公钥给服务端 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.180
添加公钥的时候是需要输入连接的主机的密码,完成后去服务端查看结果
然后客户端里生成的公匙对比是否内容一致
完成上锁操作后,我们使用客户端连接服务端
可以不需要免密直接连接,接着来用测试端连接服务端
测试端还是需要输入密码的。如果测试端也想用密匙登录,就需要用到命令“scp”复制远程主机的文件到本机上
然后再连接服务端
这样就同样可以免密登录。
关于Openssh的文件大概总结一下
文件 | 含义 |
---|---|
~/.ssh/authorized_keys | 被锁主机用于保存用户的公钥文件 |
~/.ssh/known_hosts | 辨别服务器的唯一散列码 |
~/.ssh/id_dsa | 用户的私钥文件 |
~/.ssh/id_rsa.pub | 用户的公钥文件 |
另外如果被锁用户不想再被免密登录,只需要把保存公钥的文件改名就可以
更改后相当于锁和要是不匹配无法使用了
Openssh服务的安全优化
我们来了解一些sshd服务常用相关配置参数
配置文件 • /etc/ssh/sshd_config
配置参数
Port 22 | 监听端口 |
---|---|
Protocol 2 | 指定协议版本 |
ListenAddress | 绑定IP |
HostKey | 设定HostKey密钥路径 |
PermitRootLogin | 设定超级用户是否能登录 |
PubkeyAuthentication | 公钥认证开关 |
PasswordAuthentication | 密码认证开关 AllowUsers |
AllowUsers | 用户白名单 |
DenyUsers | 用户黑名单 |
例:监听端口更改
在服务端 vim /etc/ssh/sshd_config ,进入配置文件更改port,命令前面有#号的表示不启用,所以要启用命令删除前面的#号
我将22改为666,再去客户端连接测试
连接不到端口了,这时我们使用-p参数来指定端口,进行连接
[root@severa ~]# ssh -l root 172.25.254.180 -p 666
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Mon Feb 3 01:57:41 2020
其他的像密码认证开关,关闭后其他没有密匙的主机就无法通过输入密码再连接了。白名单是需要手动输入添加,是指定只能裂解哪个用户。黑名单是指定不能连接哪个用户。
以上内容就对Openssh服务操作讲解及说明