首页 » 读书笔记 » 正文

SSH免密码登录配置以及原理图解

Linux中经常用到的SSH登录原理图解如下:

客户端免密登录服务端时的原理图解如下:

(1)SSH是一种加密的网络传输协议,提供安全的数据传输服务。一般用ssh-genkey生成生成公钥和密钥,这两个文件会默认保存在~/.ssh/路径下。常用的参数为:

  • -t: 指定生成密钥类型(rsa、dsa)。默认为rsa
  • -f: 指定存放私钥的文件,公钥文件名为私钥文件名加.pub后缀。默认为id_rsa
  • -P: 指定passphrase(私钥的密码),用于确保私钥的安全。默认为空
  • -C: 备注。默认为user@hostname

如下图所示:

公钥和私钥

其中:

id_rsa是私钥文件

id_rsa.pub是公钥文件

authorized_keys用于存放客户端公钥的文件

known_hosts是确认过公钥指纹的可信服务器列表的文件

当主机作为服务器时,有客户端连接时,则将客户端的公钥放在authorized_keys中;当主机作为客户端时,则将访问过得主机的公钥放在known_hosts中,也就是说ssh会将每个访问过的主机公钥(public key)都存放在~/.ssh/known_hosts中。

(2)再来说一下什么是公钥检查

当我们第一次连接远程主机时,会弹出该主机的公钥摘要,询问我们是否信任该主机,如下图所示:

远程主机公钥摘要

输入yes,该主机公钥摘要就会被记录在本机的~/.ssh/known_hosts中。

很多时候我们并不需要公钥摘要确认,那可以使用:

ssh -o StrictHostKeyChecking=no remote_host_ip

(3)好了,知道了上面的基础知识点,我们就可以写免密脚本了。如下图所示: