id_rsa 与 id_rsa.pub 文件详解

SSH

在正式说 id_rsa.pub,之前有必要先说说 SSH。

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。

一般我们都会使用到两种方式去登陆 SSH,密码登陆和证书登陆。初学者都喜欢用密码登录,甚至是 root 账户登录,密码是 123456,这样很容易遭受恶意攻击,所以在实际的工作中和大多数的互联网公司,都是会使用证书去登陆的。


证书登录的步骤

(1)客户端生成证书:私钥和公钥,然后私钥放在客户端,妥当保存,一般为了安全,访问有黑客拷贝客户端的私钥,客户端在生成私钥时,会设置一个密码,以后每次登录 ssh 服务器时,客户端都要输入密码解开私钥(如果工作中,你使用了一个没有密码的私钥,有一天服务器被黑了,你是跳到黄河都洗不清)。

(2)服务器添加信用公钥:把客户端生成的公钥,上传到 ssh 服务器,添加到指定的文件中,这样,就完成 ssh 证书登录的配置了。

假设客户端想通过私钥要登录其他 ssh 服务器,同理,可以把公钥上传到其他 ssh 服务器。

真实的工作中:员工生成好私钥和公钥(千万要记得设置私钥密码),然后把公钥发给运维人员,运维人员会登记你的公钥,为你开通一台或者多台服务器的权限,然后员工就可以通过一个私钥,登录他有权限的服务器做系统维护等工作,所以,员工是有责任保护他的私钥的,如果被别人恶意拷贝,你又没有设置私钥密码,那么,服务器就全完了,员工也可以放长假了。


客户端建立私钥和公钥

如果是 Linux,则在客户端终端运行以下命令,如果是 Windows,则可以用 Git Bash(默认安装了 SSH) 终端运行以下命令:

ssh-keygen -t rsa

rsa 是一种密码算法,还有一种是 dsa,证书登录常用的是 rsa。

假设用户是 blue,执行 ssh-keygen 时,才会在 .ssh/ 这个目录里面产生所需要的两把 Keys ,分别是私钥 (id_rsa) 与公钥 (id_rsa.pub)

注:Linux 是在 home/.ssh/ 目录下,而 Windows 是在 C:\Users\Feng\.ssh 目录下。


扩展:authorized_keys

就是为了让两个 Linux 机器之间使用 ssh 不需要用户名和密码。采用了数字签名 RSA 或者 DSA 来完成这个操作。

模型分析

假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

要达到的目的:

  • A 机器 ssh 登录 B 机器无需输入密码;
  • 加密方式选 rsa|dsa 均可以,默认 dsa。

单向登陆的操作过程(能满足上边的目的):

  1. 登录 A 机器
  2. ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa、id_rsa.pub 或 id_dsa、id_dsa.pub
  3. 将 .pub 文件复制到B机器的 .ssh 目录, 并cat id_dsa.pub >> ~/.ssh/authorized_keys
  4. 大功告成,从 A 机器登录 B 机器的目标账户,不再需要密码了;(直接运行#ssh 192.168.20.60

双向登陆的操作过程:

  1. ssh-keygen 做密码验证可以使在向对方机器上 ssh,scp 不用使用密码。
  2. 两个节点都执行操作:#ssh-keygen -t rsa,然后全部回车,采用默认值。
  3. 这样生成了一对密钥,存放在用户目录的 ~/.ssh 下。

将公钥考到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。


参考:

id_rsa id_pub 公钥与私钥

每日扫盲(三):id_rsa、id_rsa.pub 、authorized_keys


posted @ 2021-03-05 18:58  fengMisaka  阅读(14241)  评论(0编辑  收藏  举报