Linux SSH:一键免密,远程无忧
1、场景
在日常使用中,同一局域网中的服务器去访问另一个服务器,肯定是需要使用ssh去访问,而每次都需要输入密码,也给使用带来很多不便,尤其密码复杂度较高的时候,这样我们就可以配置上客户端访问服务端的免密登录,还有就是在使用ansible去管理多个服务器的时候,也是需要为ansible服务器配置为免密登录被管理服务器的形式,否则无法使用ansible去管理。
但是也会有弊病就是,如果跳板机或者ansible服务器被入侵的话,所有的服务器都暴漏出来。所以安全管理这方面也需要重视起来。
2、原理
即在客户端上生成一份公钥和一份私钥,将公钥以ssh-copy-id命令复制到服务端授权列表(authorized_keys)。当客户端带着公钥申请连接服务端时,服务端首先在authorized_keys中查找是否存在该公钥,如果存在则开始进行验证,否则就提示输入密码。首先生成一个随机字符串,利用对应公钥进行加密,然后返回给申请连接的服务器,申请连接服务器利用私钥进行解密,再将字符串返回给目标服务器完成验证,进行后续操作。
3、配置
命令解释:
ssh-keygen 用于为ssh生成、管理和转换认证密钥,包括 RSA 和 DSA 两种密钥。默认使用RSA密钥。
-t:此参数就是产生密钥的类型,默认是rsa,可以指定dsa | ecdsa | ed25519 | rsa | rsa1。
-f:指定文件路径和文件名
-N:提供一个新的密码,就是在登录的时候还是需要输入密码,为空就行。
ssh-copy-id 就是将产生的公钥发送到,相应服务器的授权列表中,就是authorized_keys文件中。(这个过程中会让你输入一次对应服务器的密码)
示例:
评论