SSH登录
SSH密钥登录:SSH默认采用密码登录,这种方法有很多缺点,简单的密码不安全,复杂的密码不容易记忆,每次手动输入也很麻烦。密钥登录是更好的解决方案。接下来介绍三种SSH的登录方式。
一:SSH口令登录
1 登录原理
SSH服务默认登录方式为口令登录,也是我们平时最常用的,原理如下:
1.客户端向服务端发起请求。
2.服务端收到请求将自己生成的公钥返回给客户端。
3.客户端用返回来的公钥加密自己的登录密码,发送给服务端。
4.服务端用自己的私钥解密,并验证密码是否正确,如果正确,允许登录。
可以看到整个流程存在四个步骤,下面给大家看看详细步骤。
2 使用教程
SSH的基本使用方法是:
ssh user@remote -p port
user是你在远程机器上的用户名,如果不指定的话默认为当前用户。
remote是远程机器的地址,可以是IP,域名,或者是后面会提到的别名。
port是SSH Server监听的端口,如果不指定的话就为默认值22(ssh的默认端口)
所以,SSH口令登录的前提就是知道目标的用户名,地址和SSH服务的端口,缺一不可。
1> 建立连接
举例:假如我正在使用kali机器做渗透测试,探测到目标的地址是。
开启了22端口,并且是SSH服务,还知道了目标机器上的用户名为user1,密码为123456,就
可以用SSH远程登良路目标机器,指令如下:
ssh user1@172.21.70.110 -p 22
注:这里的-p 22也可以不要,因为-p 22是默认选项,如果是其他端口的ssh服务就需要用-P来指定其他的端口了。
2>输入密码
输入上面的指令后页面如下,提示输入密码,这里密码的输入是隐藏输入(并不会显示),输
入密码后直接回车就好。
3 缺点总结
1>安全性
整个验证机制是没什么间题的,但是当遇到中间人攻击这种机制的安全性便会遣到破坏,什么是中间人攻击?
客户端向服务端发起请求攻击人截获请求,并向客户端返回自己的公钥。客户端用公钥加密登录密码并返回。攻击人用自己的私钥解密,获得服务器的登录密码。
2>繁项性
每次登录目标主机都要输入密码,短的密码不安全,长的密码又不好记,用户体验感较差。为了解决上面这几个问题,于是更新,更安全的方法随之而生,那就是SSH密钥登录,下面我们来看看。
二:SSH密钥登录
1 登录原理
很多人可能都听过密钥登录,知道它可以通过SSH在无需密码的情况下登录目标机器上的用户,那这个流程是怎样的呢?我们来详细看看:
1.客户端自己生成密钥对,事先将公钥上传存储到远程服务器上,私钥自己保管。
2.客户端发起登录请求。
3.服务器发一串随机字符串给客户端。
4.客户端用自己的私钥加密随机字符串,返回给服务端。
5.服务端用事先存储好的公钥解密,确认字符串是原来发出的字符串,便允许登录。
可以看到整个流程存在五个步骤,下面给大家看看详细步骤。
2 使用教程
1>生成密钥对
ssh-keygen -t rsa
#-t表示类型选项,这里采用rsa加密算法,然后根据提示一步步地按回车键即可(总共三个),页面如下
这里为什么连续按三个回车就可以了呢,我们来看看这三个回车对应了什么。
第一个回车:让我们输入一个目录路径来保存生成的密钥对,默认为/root/.ssh,回车代表直接默认,也可以自己输入一个路径来保存。
第二个回车:让我们设置私钥密码,如果设置了私钥密码,每次使用SSH进行操作都需要输入私钥密码。这里直接空格就是密码为空,这样每次使用就不需要输入密码。
第三个回车:这个就是单纯地再次输入私钥密码(就是一个确认密码),我们本来就是想设置密码,所以还是至二级回车即可。
像我上面那样的话密钥对就已经生成了,我们到自己设置的密钥对路径下看看,如果没有设置路径的话就是默认路径/root/.ssh,查询结果如下:
可以看到在/root/.ssh路径下生成了密钥对(即公钥和私钥),其中id_rsa文件就是私钥,id_rsa.pub文件就是公钥。
2>投递公钥到服务端
上面我们已经生成了密钥对,按照步骤需要将密钥对中的公钥保存到目标机器的/.ssh/authorized_key文件中,这里给大家介绍三种投递方式,但都是基于目标开启了ssh服务和知道目标账密的前提下;
注意:~表示代码主目录,也就是我们想用SSH登录的用户目录。
第一种:
这是最简单也是最常用的方式,需要ssh-copy-id,但是一般linux都自带这个。
ssh-copy-id user@remote -p port
user是你在远程机器上的用户名,如果不指定的话默认为当前用户。
remote是远程机器的地址,可以是IP,域名,或者是后面会提到的别名。
port是SSH Server监听的端口,如果不指定的话就为默认值2(ssh的默认端口)
实例:这里我直接把上面生成的密钥对中的公钥上传到目标机器的tom用户目录下;
可以看到在这里已经成功上传了,因为这是我们自己搭建的环境,我们也可以去目标机器看看/.ssh上有没有我们上传的公钥文件,也就是authorized_keys文件。
[root@localhost /]#cd/home/tom/.ssh
[root@localhost .ssh]#ls
authorized_keys
[root@localhost .ssh]#
我们再来登录便不会提示我们输入密码。
第二种:
在没有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文件中。
第三种:
就是两台电脑均可控的情况下,手动把本地的~/.ssh/id_rsa.pub复制到目标机器~/.ssh/authorized_keys文件中。
三:SSH最简单登录方法(别名配置)
每次都输入ssh user@remote -p port,时间久了也会觉得很麻烦,特别是当user,remote和port都得输入,而且还不好记忆的时候。配置别名可以让我们进一步简化。
比如我想用ssh host1来替代上面这么一长串,那么在~/.ssh/config文件里面追加以下内容:
Host hostl
HostName remote
User user
Port port
举例:先在本地的~/.ssh里面创建一个名为config的文件,里面代码如下:
Host host1
HostName 172.21.70.110
User tom
Port 22
现在我们就可以尝试使用ssh host1来登录了,如下:
[root@localhost /]# cd/root/.ssh/
[root@localhost .ssh]# ls
id_r said_rsa.pub known_hosts
[root@localhost .ssh]# vi config
[root@localhost .ssh]# ssh host1
Last login:Tue0ct_1821:56:362022from172.21.70.110
[tom@localhost~]$
可以看到,也能成功登录,并且与刚才配置的密钥登录配合,不用输入密码,目标信息不用记。
注意:这个别名并不是必须配置公钥登录,这里如果没有配置密钥登录也可以使用别名,只是文章来源:https://www.toymoban.com/news/detail-458134.html
登录时需要输入密码而已。文章来源地址https://www.toymoban.com/news/detail-458134.html
到了这里,关于Linux下SSH登录的三种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!