1.8 Linux中的远程登陆服务

Openssh的功能

  1. sshd服务的用途

当主机中开启openssh服务,那么就对外开放了远程连接的接口
远程管理工具ssh具有数据加密传输、网络开销小以及应用平台范围广的特点,是远程管理中最常见的控制工具

ssh(Secure SHell) —— openssh服务的客户端
sshd(Secure SHell daemon) —— openssh服务的服务端

ssh基本用法

  1. 基本用法

(1)ssh -l [远程主机用户] <ip | hostname>
ssh -l root 172.25.254.123
通过ssh命令在172.25.254.123主机中以root身份开启远程shell

首先要创建一个新的用户(纯净)
在这里插入图片描述

当首次去登录服务端时,系统会自动在家目录下生成一个目录 .ssh。目录中包含有相关的认证信息和密钥信息

在这里插入图片描述
在这里插入图片描述
验证是否登录成功:查看客户端当前的IP地址是否和服务端的IP地址相同。
相同,则成功。

在这里插入图片描述

当收到 客户端的 “yes” 时,服务端会向客户端发送身份公钥,并保存该公钥到~/.ssh/know_hosts

在这里插入图片描述

扫描二维码关注公众号,回复: 12914661 查看本文章

服务端生成的公钥在/etc/ssh里
在这里插入图片描述

对比客户端和服务端的公钥,两者是一致的。认证的过程就是两者相互对比的过程

(2)操作:key在服务端上被改变(删除)
此时,再次登录服务端,会报错。
报错的原因:客户端所持有的key与服务端的key不同,匹配不上。服务端认为客户端是一个未认证的人

应对措施:根据报错的提示,删除错误的行

删除服务端的公钥
在这里插入图片描述
重新启动守护进程,生成新的公钥
在这里插入图片描述
对比客户端和服务端的公钥,两者不同
在这里插入图片描述
再次登录服务端时,系统报错,无法登录

在这里插入图片描述

根据系统的提示去修改身份认证文件
在这里插入图片描述

提示显示是第一行有错误,删除

在这里插入图片描述

再次尝试登录服务端,可以正常登录
在这里插入图片描述
在这里插入图片描述

再次查看客户端和服务端的公钥,两者匹配成功
在这里插入图片描述
2. ssh的基本用法
(1)-l 指定远程主机用户(没有开启图形的接口设定)

(2)-Xl 开启图形(gedit)

注意 :要留意当前客户端用户是否有权利打开图形(可以使用默认登陆用户))

在这里插入图片描述
注意开启的图形进程是在服务端里
查看方式:ps ax | grep gedit

在这里插入图片描述在这里插入图片描述

也可以在该命令后面加上gedit,不用登陆远程主机,就可以开启gedit(会占用shell)
在这里插入图片描述

(3)-f 后台运行
不登陆远程主机,且不占用shell
在这里插入图片描述

(4)-o 指定连接参数(使内部指令发生一些变化)

删除身份认证文件,代表当前客户端从未连接过任何人(登陆服务端时,需要键入yes)
在这里插入图片描述
这时,不想键入yes(不检测),键入以下命令
在这里插入图片描述在这里插入图片描述
(5)-t 指定连接跳板
当连接某一台服务器的时候,它会拒绝客户端。可以连接一台它允许的主机,从这台主机跳到远程主机服务端上

先从172.25.254.123跳到172.25.254.123,再连接它自己(跳到虚拟机,再从虚拟机连接它自己)
要求:要跳的那台主机里开了ssh守护进程

在虚拟机里键入 " w -i ",可以查看当前连接该服务端的用户
在这里插入图片描述
(6)-i 指定私钥

sshd key密码认证

  1. 认证类型
    对称加密
    非对称加密

  2. 生成密钥
    密钥在哪里生成都可以

(1)方法一:ssh-keygen

1. 生成公私钥

ssh-keygen

生成的密钥在/home/username/.ssh/

用户选择在客户端生成公私钥(也可以在服务端生成)
系统会自动生成一个RSA的文件(当然也可以自己设定,但是需要改很多的配置文件,为了方便,默认回车(名字默认))
如果想要密码,必须大于4位。如果没有密码,就是免密登陆
在这里插入图片描述
用户所持有的密码就是私钥,它放在/home/yao/.ssh/id_rsa文件里(钥匙)
公钥在/home/yao/.ssh/id_rsa.pub里(锁)
在这里插入图片描述在这里插入图片描述

2. 给服务器上锁

ssh-copy-id -i /home/yao/.ssh/id_rsa.pub [email protected]

虽然生成了公私钥,但是,现在服务端还没有得到这个公钥(还未加密服务器)
(服务器上有很多的用户,我只需要去锁我自己的那个用户)

用用户生成的公钥去加密172.25.254.123主机上的root用户(除了root,其他用户都未加密)

需要征得远程主机(服务端)的同意(这些操作都是内部人员做的)
在这里插入图片描述
在远程主机服务端上查看公钥
如果在用户的.ssh/下,看到有id_rsa,则,用户可以免密登陆,不需要输入密码。

在这里插入图片描述在这里插入图片描述

操作:从客户端的.ssh中删除文件id_rsa(删除私钥,将文件私钥移入/mnt里)
此时,没有密码,登陆远程主机的时候,需要输入密码

在这里插入图片描述

操作:从服务端删除公钥文件
不能免密登陆,需要输入密码

在这里插入图片描述
(2)第二种方法:ssh-keygen -f /home/yao/.ssh/id-rsa ——P “”

快速生成密钥:用户不需要交互模式去生成私钥和公钥
ssh-keygen -f /home/yao/.ssh/id-rsa ——P “”

在这里插入图片描述在这里插入图片描述在这里插入图片描述

sshd 安全优化参数详解

  1. 基本默认信息配置

安装包:openssh-server
主配置文件:/etc/ssh/sshd_conf
默认端口:22
客户端命令:ssh

  1. 安全优化在服务器上操作

(1)改端口号

先用getenforce去检selinux是否开启(如果开着,无法更改端口号,因为selinux规定了更改的端口范围)
出现disable:可以直接更改端口
出现enforcing

vim /etc/selinux/config
改成disable
reboot

用专业命令扫描端口

ss  -anltupe  |  grep  sshd 

可以看到端口号22
在这里插入图片描述

ss参数 注释
a 所有端口
l 活跃,开启的listen
t TCP协议
u UDP协议
p 开启的进程名称
e 详细信息
n 不做解析(直接显示ip,不显示主机名)

如果不加22 -p,系统会自动连接默认端口22(不指定端口)

ssh -l  root -p  22  192.168.0.25

在这里插入图片描述

修改端口号

vim /etc/ssh/sshd_config
#修改第17行
systemctl  restart  sshd
systemctl  disable --now firewarld
ss -anltupe | grep sshd

systemctl reload sshd.service
在这里插入图片描述在这里插入图片描述在这里插入图片描述

扫描端口:nmap 192.168.0.25(未安装)

(2)PermitRootLogin yes --> no 限制连接超级用户

vim /etc/ssh/sshd-config
#46行  yes改成no,超级用户不能登录
#修改后,重启服务
systemctl restart sshd

在这里插入图片描述在这里插入图片描述

之后,ssh -l root 192.168.0.25,去登录超级用户,无法登录(被拒绝)
但是,可以登录普通用户westos
在这里插入图片描述在这里插入图片描述

(3) 限制所有用户登录(用户的黑白名单)

没有黑白名单,所有人都可以登录

DenyUsers yao(普通用户黑名单)

vim /etc/ssh/sshd_config
#47行:DenyUsers  yao
systemctl restart sshd
ssh -l yao 192.168.0.25

在这里插入图片描述

用户白名单(只有他可以用)

AllowUsers yao 只允许yao登录,root也无法登录

vim /etc/ssh/sshd_config
#48行:AllowUsers yao
systemctl restart sshd

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(4)PasswordAuthentication yes --> no原始认证方式

vim /etc/ssh/sshd_config
#74行:PasswordAuthentication  yes  -->  no
systemctl  restart sshd

root经过了key的认证,但是yaoyao未经过认证,会直接被拒绝。因为此时,只有key认证,没有key,就不能登录
(谁有钥匙,谁就可以登录,没有钥匙,连输入密码的权利都没有,避免了暴力破解)
在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47133613/article/details/112804833
1.8