openssh服务的部署及安全优化
一、openssh功能概述
openssh是一个服务,开启了openssh服务,就对外开放了远程连接的接口,是SSH(Secure Shell)协议的免费开源软件,软件安装的名称为Openssh-server,配置文件在/etc/ssh/sshd_conf,默认端口为22,客户端命令为ssh,服务端命令为sshd
可以使用命令rpm -qa | grep open
来查看系统中是否安装了openssh-server软件,如果安装了则可以实现远程连接
二、ssh命令的用法
命令为ssh 服务端用户@服务端ip
常见的参数如下表
-l | 指定登录用户 |
---|---|
-i | 指定** |
-x | 开启图形 |
-p | 指定端口 |
-f | 后台运行 |
-o | 指定连接参数 |
-t | 指定连接跳板 |
在实验ssh命令之前首先需要搭建实验环境,及使两个虚拟机servera以及workstation之间建立联系,首先在workstation虚拟机中输入命令nm-connection-editor
,将ip地址设置为真机ip地址加100,然后在servera虚拟机中同样输入命令nm-connection-editor
,将ip地址设置为真机ip地址加200,可以通过命令ip addr show
查看ip是否设置成功,然后将workstation作为服务端,将servera作为客户端,在客户端中输入命令ping 服务端ip
查看网络是否互通,再在servera中输入ssh [email protected]服务端ip
进行连接
在下图中[email protected]为服务端,[email protected]为客户端,在客户端中输入命令ssh -l root 服务端地址
输入服务端root用户密码可以在客户端中进入服务端,但是此时远程连接之后的界面是无图形界面,进入服务端后输入gedit后会显示警告,不能进入图形模式
加上参数-X后能够进入gedit图形界面
可以直接在执行ssh命令时在参数后加上gedit则连接完成后打开gedit,在客户端过滤gedit进程,没有执行
在服务端过滤gedit进程显示存在这个进程,所以远程连接成功
远程连接并在后台运行gedit界面
将[email protected]作为跳板去连接服务端[email protected],需要输入连接的两个用户的密码能够远程连接成功
当客户端连接了服务端后,服务端可以通过命令w -i
来查看有哪些客户连接了它,上述实验中通过跳板[email protected]连接服务端后在服务端中显示跳板连接了服务端而不是客户端
参数-o可以指定连接参数可以连接远程命令参数RemoteCommand在打开服务端gedit
三、openssh key
加密方法:
1、生成**,命令为ssh-******
2、上传**,命令为ssh-copy-id -i keyfile 要锁的服务端用户端口
一般ssh-******生成的文件中存在两个文件,/root/.ssh/id_rsa是存放私钥的文件,一般用于客户端,/root/.ssh/id_rsa.pub是存放公钥的文件,一般用于服务端,上传**中的keyfile是存放公钥的文件
文件 | 功能 |
---|---|
~/.ssh/authorized_keys | 用于保存用户的公钥文件 |
~/.ssh/known_hosts | 辨别服务器的唯一散列码 |
~/.ssh/id_rsa | 用户的私钥文件 |
~/.ssh/id_rsa.pub | 用户的公钥文件 |
此实验中虚拟机servera为服务端,workstation为客户端
生成**
将公钥上传
在客户端中远程连接服务端
在真机中连接服务端需要输入密码
在服务端servera中输入命令vim /etc/ssh/sshd_config
更改配置文件中密码认证PasswdAuthentication为no,及不允许远程连接时密码登录,如果有私钥则直接完成远程连接,如果没有私钥则直接显示权限限制,不能通过登录密码完成远程连接
再次在真机中远程连接服务端显示权限限制并且不允许输入密码连接
通过scp命令可将私钥文件传输为真机,需要输入真机用户密码
再次将真机连接服务端servera,显示连接成功
更换公钥可以将保存公钥的文件~/.ssh/authorized_keys重命名为一个新的文件
在客户端连接服务端失败
四、sshd服务常用相关配置参数
配置文件为
/etc/ssh/sshd_config
配置参数主要包括
port 22 | 监听端口 |
---|---|
protocol 2 | 指定协议版本 |
ListenAddress | 绑定ip |
HostKey | 绑定HostKey**路径 |
PermitRootLogin | 设定超级用户是否能登录 |
PubkeyAuthentication | 公钥认证开关 |
PasswdAuthentication | 密码认证开关 |
AllowUsers | 用户白名单 |
DenyUsers | 用户黑名单 |