ssh免密登录

ssh免密登录

   张吉吉     2019年11月18日 01:48     1936    

1、场景

       在日常使用中,同一局域网中的服务器去访问另一个服务器,肯定是需要使用ssh去访问,而每次都需要输入密码,也给使用带来很多不便,尤其密码复杂度较高的时候,这样我们就可以配置上客户端访问服务端的免密登录,还有就是在使用ansible去管理多个服务器的时候,也是需要为ansible服务器配置为免密登录被管理服务器的形式,否则无法使用ansible去管理。

       但是也会有弊病就是,如果跳板机或者ansible服务器被入侵的话,所有的服务器都暴漏出来。所以安全管理这方面也需要重视起来。

 

2、原理

image.png

       即在客户端上生成一份公钥和一份私钥,将公钥以ssh-copy-id命令复制到服务端授权列表(authorized_keys)。当客户端带着公钥申请连接服务端时,服务端首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证,否则就提示输入密码。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证,进行后续操作。

 

3、配置

ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ''

ssh-copy-id root@IP

 

命令解释:

ssh-keygen 用于为ssh生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥。默认使用RSA密钥。

-t:此参数就是产生密钥的类型,默认是rsa,可以指定dsa | ecdsa | ed25519 | rsa | rsa1。

-f:指定文件路径和文件名

-N:提供一个新的密码,就是在登录的时候还是需要输入密码,为空就行。

 

ssh-copy-id 就是将产生的公钥发送到,相应服务器的授权列表中,就是authorized_keys文件中。(这个过程中会让你输入一次对应服务器的密码)

1.png

 

示例:

2.png

3.png

      


文章评论

0

其他文章