全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

渗透测试——SSH的两种远程登录方法详解

发布时间:2022-11-08 13:32:02
发布人:wjy

  最近在打靶场的过程中发现有时候 [SSH] 无需密码就可以直接登陆,这确实是触及到我的盲区了,上网查了一下才知道这原来是 ssh 的秘钥登录,花了一整天才弄懂,所以写下这篇内容,希望能帮助到大家

  一:SSH 口令登录

  【1】登录原理

  SSH 服务默认登录方式为口令登录,也是我们平时最常用的,原理如下

  客户端向服务端发起请求

  服务端收到请求将自己生成的公钥返回给客户端

  客户端用返回来的公钥加密自己的登录密码,发送给服务端

  服务端用自己的私钥解密,并验证密码是否正确,如果正确,允许登录

  可以看到整个流程存在四个步骤 ,下面给大家看看详细步骤

  【2】使用教程

  SSH 的基本使用方法是:

  ssh user@remote -p port

  user 是你在远程机器上的用户名,如果不指定的话默认为当前用户

  remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名

  port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22(ssh 的默认端口)

  所以,SSH 口令登录的前提就是知道目标的用户名,地址和 SSH 服务的端口,缺一不可

  建立连接

  举例:假如我正在使用 kali 机器做[渗透测试],探测到目标的地址是

  开启了 22 端口,并且是SSH 服务,还知道了目标机器上的用户名为 Tom,密码为 123456,就可以用 SSH 远程登良路目标机器,指令如下

  ssh tom@172.21.70.110 -p 22

  注:这里的-p 22 也可以不要,因为-p 22 是默认选项,如果是其他端口的 ssh 服务就需要用-p 来指定其他的端口了

  输入密码

  输入上面的指令后页面如下,提示输入密码,这里密码的输入是隐藏输入(并不会显示),输入密码后直接回车就好

SSH的两种远程登录方法1

  因为我已经连接过很多次了,但是第一次连接会弹出来一段话,意思是该远程主机的真实性无法确定,确定想要继续连接吗?,直接输入 yes 即可

  成功连接

  输入密码后页面如下图

SSH的两种远程登录方法2

  可以看到这里我们成功用 SSH [远程登录]了目标的tom 用户,这就是SSH 口令登录的大致内容了

  【3】缺点总结

  安全性

  整个验证机制是没什么问题的,但是当遇到 中间人攻击这种机制的安全性便会遭到破坏,什么是 中间人攻击?

  客户端向服务端发起请求

  攻击人截获请求,并向客户端返回自己的公钥

  客户端用公钥加密登录密码并返回

  攻击人用自己的私钥解密,获得服务器的登录密码

  繁琐性

  每次登录目标主机都要输入密码,短的密码不安全,长的密码又不好记,用户体验感较差

  为了解决上面这几个问题,于是更新,更安全的方法随之而生,那就是SSH 秘钥登录,下面我们来看看

  二:SSH [秘钥]登录

  【1】登录原理

  很多人可能都听过秘钥登录,知道它可以通过 SSH 在无需密码的情况下登录目标机器上的用户,那这个流程是怎样的呢?我们来详细看看

  客户端自己生成密钥对,事先将公钥上传存储到远程服务器上,私钥自己保管

  客户端发起登录请求

  服务器发一串随机字符串给客户端

  客户端用自己的私钥加密随机字符串,返回给服务端

  服务端用事先存储好的公钥解密,确认字符串是原来发出的字符串,便允许登录

  可以看到整个流程存在五个步骤 ,下面给大家看看详细步骤

  【2】使用教程

  生成密钥对

  ssh-keygen -t rsa #-t表示类型选项,这里采用rsa加密算法

  然后根据提示一步步的按回车键即可(总共三个),页面如下

SSH的两种远程登录方法3

  这里为什么连续按三个回车就可以了呢,我们来看看这三个回车对应了什么

  第一个回车:让我们输入一个目录路径来保存生成的密钥对,默认为/root/.ssh ,回车代表直接默认,也可以自己输入一个路径来保存

  第二个回车:让我们设置私钥密码,如果设置了私钥密码,每次使用 SSH 进行操作都需要输入私钥密码。这里直接空格就是密码为空,这样每次使用就不需要输入密码

  第三个回车:这个就是单纯的再次输入私钥密码(就是一个确认密码),我们本来就是想设置密码,所以还是至二级回车即可

  像我上面那样的话密钥对就已经生成了,我们到自己设置的秘钥对路径下看看,如果没有设置路径的话就是默认路径/root/.ssh,查询结果如下

SSH的两种远程登录方法4

  可以看到在/root/.ssh路径下生成了密钥对(即公钥和私钥),其中id_rsa 文件就是私钥,id_rsa.pub 文件就是公钥

  投递公钥到服务端

  上面我们已经生成了密钥对,按照步骤需要将密钥对中的公钥保存到目标机器的~/.ssh/authorized_key文件中,这里给大家介绍三种投递方式,但都是基于目标开启了 ssh 服务和知道目标账密的前提下

  注意:~ 表示代码主目录,也就是我们想用 SSH 登录的用户目录。

  第一种:

  这是最简单也是最常用的方式,需要ssh-copy-id,但是一般 linux 都自带这个

  ssh-copy-id user@remote -p port

  user 是你在远程机器上的用户名,如果不指定的话默认为当前用户

  remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名

  port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22(ssh 的默认端口)

  实例:这里我直接把上面生成的密钥对中的公钥上传到目标机器的tom 用户目录下

SSH的两种远程登录方法5

  可以看到在这里已经成功上传了,因为这是我们自己搭建的环境,我们也可以去目标机器看看~/.ssh上有没有我们上传的公钥文件,也就是authorized_keys 文件

SSH的两种远程登录方法6

  可以看到目标路径下已经有了,现在我们再用 kali 来登录试试

SSH的两种远程登录方法7

  可以看到已经成功登录了,而且并没有提示我们输入密码

  第二种:

  在没有 ssh-copy-id的情况下(比如在 Windows 上),也是可以轻松做到这件事的。用命令的话也是一句话搞定

  ssh user@remote -p port 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

  这句话的意思是,在远端执行新建 .ssh 文件夹,并把本地的 ~/.ssh/id_rsa.pub(也就是公钥)复制到远端的 .ssh/authorized_keys 文件中,因为 windows 用得少,这里就不实操举例了,有兴趣的同学可以试试

  第三种:

  咳咳,这个其实也不算方法,就是两台电脑均可控的情况下,手动把本地的 ~/.ssh/id_rsa.pub 复制到目标机器的~/.ssh/authorized_keys 文件中

  三:SSH 最简单登录方法——别名配置

  每次都输入 ssh user@remote -p port,时间久了也会觉得很麻烦(不要觉得我懒哈哈),特别是当 user, remote和 port 都得输入,而且还不好记忆的时候。配置别名可以让我们进一步偷懒(咳咳)。

  比如我想用ssh host1 来替代上面这么一长串,那么在~/.ssh/config文件里面追加以下内容:

  Host host1 HostName remote User user Port port

  举例:先在本地的~/.ssh里面创建一个名为config 的文件,里面代码如下:

SSH的两种远程登录方法8

  现在我们就可以尝试使用ssh host1 来登录了,如下

SSH的两种远程登录方法9

  可以看到,也能成功登录,并且与刚才配置的秘钥登录配合,不用输入密码,目标信息不用记,我说这是 ssh最简单的登录方法没问题吧。

  注意:这个别名并不是必须配置公钥登录,这里如果没有配置秘钥登录也可以使用别名,只是登录时需要输入密码而已

  好了今天的 SSH 使用技巧分享就到这里了希望今天的内容能对大家有所帮助,感谢大家的阅读,再见啦!

相关文章

压力测试和性能测试有什么区别?

压力测试和性能测试有什么区别?

2023-10-14
什么是运行时环境?

什么是运行时环境?

2023-10-14
什么是MAC地址?

什么是MAC地址?

2023-10-14
黑石服务器是什么?

黑石服务器是什么?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取