0
点赞
收藏
分享

微信扫一扫

百战RHCE(第十六战:Linux进阶命令十三-SSH远程登陆极简管理)

c一段旅程c 2022-04-08 阅读 63

首先,在windows系统当中我们其实有远程登陆其他主机的工具(但要收费),还有类似功能的“向日葵”,那windows 我们能不能远程控制其他主机呢?

带着这个问题我们来引入今天我们要讲到 SSH 协议,ssh协议可以使系统通过不安全的网络 以加密&安全的方式进行通信。

而我们今天要学习的就是基于SSH协议的远程登陆主机的ssh命令


一.ssh命令基础讲解

开始之前,你最好在创建一个虚拟机或者你克隆一个当前你的虚拟机,克隆完以后记得把IP地址稍微修改一下哈

下面我们就来学习下ssh命令的格式


ssh 格式 :ssh 远程主机用户名@主机IP地址(有时候你会看到不是IP地址的,那是因为域名通过DNS解析获得了IP地址,这个知识点我们后面会讲解的)


我的 centos0 主机的IP地址是 192.168.254.10

        centos1 主机的IP地址是 192.168.254.101

我们来看一张图

首先我们来看第一个大红括号,当我们第一次使用 ssh 远程登陆一台主机的时候,系统会提示我们 保存一个专属于这台主机的 “指纹钥匙”。 这个 “指纹钥匙”最大的好处,就是当有其他恶意主机故意冒充你所要连接的主机的时,虽然 看上去一样,但因为这个冒牌主机上面没有 这个 “指纹钥匙”和我们一开始连接保存在本主 机的 “指纹钥匙” 副本内容不同,所以主机这时会重新提醒你。

而第二个红括号就是需要你输入远程用户的密码进行登陆

我们在看第三个黄色括号,会发现我们这次再次登陆远程主机的时候没有提示 “指纹钥匙” ,说明主机还是那个主机,这时只要输入用户密码就好了

因为每次都需要输入主机的IP地址,为了避免这个麻烦,我们在 /etc/hosts 中设置 192.168.254.111 的域名解析 centos1

这里可以看见我有设置了很多的域名解析


二.ssh“指纹钥匙”存储位置

这里我们把 centos0 比作 客户端Centos1 比作 服务器

当我 centos0 连接 centos1 的时候, “指纹钥匙” 副钥会保存在

 客户机的 ~/.ssh/known.hosts

服务器的 /etc/ssh/

我们首先从 客户机上 查看 “指纹钥匙”

 

 首先我们先看第一个红括号,我们先到客户端查看副钥的位置,我们在这个位置中 存在一个 known_hosts 文件,我们打开文件,看上黄线部分,这块很多很多的字母数字就是我的副钥的内容了

我们在来看看 “服务器”位置上面的 钥匙,我们首先看向第一个红括号,这里就是我们服务器存储 “指纹钥匙”的位置,我们在来看第二个红括号,大家注意所有 以 .pub 结尾的文件都是存放 “指纹钥匙”的,他们唯一的不同就是运用的算法不同

这个ssh登陆远程主机的形式其实并不难,很简单,但却不是特别的安全,如果有一名黑客想要攻击你的电脑,那么它只需要猜出你roo用户的密码就可以了。这不仅对个人来说非常的不安全,对于企业来说也是绝对不允许的。

所以我们这里我们就要引入 SSH密钥验证这个概念


三.ssh密钥

大概流程就是:

1.我们先生产一个公钥对,一个给本机一个给远程主机

2.然后我们在客户端配置一个私钥这个私钥用于在两个公钥配对成功后,进行登陆

这就有点,钥匙(私钥)和门(公钥)的关系

只要我们在 /etc/ssh/sshd_config 文件中修改部分条目的内容,禁止root用户远程登陆和使用密码远程登陆(这一块后面会讲解到的),那么一个黑客想要进攻你的机器基本就会非常非常的困难了。

那么为了让我们的电脑更加的安全,我们就跟着上面的思路来进行命令的学习吧

第一步:创建公钥和私钥


格式:ssh-keygen


 

 

我们在终端上使用了 ssh-keygen 后,我们先来注意到黄括号的内容,这里主要让你输入你想把密钥文件放在那里,如果你上面都不输入,按回车,系统会默认保存在当前用户家目录中的 .ssh中

红括号,这里主要需要你输入私钥文件的密码(也叫密语),如果你不输入,那么你直接用含有私钥的主机就能登陆远程机了(不用输入任何密码),所以这样非常的不安全,这边建议大家还是设置一个。

绿括号,这里就是配置完成后系统将你的私钥和公钥存放的地址,公钥的文件时以 .pub结尾的

蓝括号,这里就是我们公钥,这里的内容和我们在公钥文件中的不一样,那里的文件内容时被加密过的

第二步:将公钥发送到远程主机上


格式:ssh-copy-id 用户@虚拟机名称  -i  指定公钥存放位置


 注意看第一个红括号,ssh-copy-id 将我们 /root/.ssh/id_rsa.pub 下载到了远程主机上,因为我这里没有使用 -i 指定下载地址,系统默认给我存放在远程主机上 ~./ssh/authorized.keys

在看第二个红括号,你会发现我们这次 使用 ssh root@centos1 远程登陆主机的时候,使用的不是密码登陆还是使用的密语进行登陆的。

 这里我们进入的centos1中,我们打开 ~/.ssh目录,查看 authorized.keys文件内容,然后返回centos0查看 id_rsa.pub 的内容,我们发现它们两个的内容是一样的,那么这里就可以确定 authorized.keys就是id_rsa.pub传送过的公钥副本

第三步:修改 ssh配置文件

在这个文件中存在非常多的变量名。在这里我们只需要知道两个就够了

第一个: Permit RootLogin 允许root用户远程登陆

第二个: Passwd Authentication 允许通过用户密码通过登录

我们看到 Permit RootLogin 默认是yes ,且处于被注释状态,如果你想修改不允许使用 root用户登陆 ,把#号去掉, 将 PermitRootLogin no 就好了,passwordAuthentication 也是一样的。

修改完以后退出记得在使用 systemctl reload sshd 重新加载下配置。

下面你在尝试使用root用户登陆或用户密码登陆时会发现这时就无法进行连接了


四.密钥登陆小技巧

下面我在来教大家一点小的知识点,这个知识点可以方便你的ssh远程登陆主机操作,但并不是必须要掌握的,但非常的简单和方便,你可以根据自己的需求进行观看。

ssh-agent命令操作流程。

1.eval $(ssh-agent):启动ssh-agent

2.ssh-add 私钥文件:将私钥文件缓存到内存中

 

我们先来看第一个红括号,这里我们先来激活 ssh-agent

在来看第二个红括号,我们在  ssh-add 将id_rsa 的文件密语缓存到内存当中

现在我们在来看黄色的括号,出现了这些内容,说明密钥密语已经添加被缓存到内存当中去了

我们在来看蓝色的括号,可以发现我们这次使用 ssh root@centos1 登陆远程主机的时候就不需要输入密语了

注意关机后就失效了!!!


好了好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,今天的学习内容并不是很多,关键多打几遍就会了,有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈~嘿嘿嘿~我会定期更新文章的,谢谢朋友你的支持哈~

 

举报

相关推荐

0 条评论