linux中基于密钥对实现免密登录

原理

        用户通过 OpenSSL 工具生成了 RSA 算法的公钥和私钥,然后可以把公钥发给需要免密登录的远程服务器,私钥存储在本地。后续进行登录该远程服务器时,远程服务器会把用户的公钥发送到本地客户端,本地客户端会把接收到的公钥与自己的私钥进行比对,私钥解密成功后就可以无需密码进行访问

一、密钥管理

1.1 密钥的存储

密钥的信息存储在以下任一位置

系统范围的/etc/ssh/ssh_known_hosts 文件。

每个用户的主目录中的~/.ssh/known_hosts 文件。

如果您连接到远程系统,并且该系统的公钥不在/etc/ssh/ssh_known_hosts文件中,则 SSH客户端将在~/.ssh/known hosts 文件中搜索公钥。

1.2  密钥条目介绍

每个已知主机密钥条目包含一行,其中有三个字段:

第一个字段是共享该公钥的主机名和IP 地址的列表。
第二个字段是公钥的加密算法。

最后一个字段是公钥本身。

二、生成公-私密钥对

1.1 生成无密语的密钥对

        输入ssh-keygen命令可以生成密钥对,默认会把私钥和和公钥分别存储在~/.ssh/id_rsa和~/.ssh/id_rsa.pub文件中

ssh-keygen

        也可以在ssh-keygen后面加-y选项将密钥对存储在指定位置,如下将私钥和和公钥分别存储在~/.ssh/key-with-pass和~/.ssh/key-with-pass.pub文件中       

        绝对路径为    /home/当前用户名/.ssh/key-with-pass        ssh-keygen  -f   .ssh/key-with-pass

ssh-keygen  -f   .ssh/key-with-pass

        然后一直点回车键直至生成完成,密钥对就生成好了

1.2 生成有密语的密钥对

        与无密语密钥对不同的是输入ssh-keygen命令后把回车换成密语,通俗来说就是设置一个密码来保护私钥,每次使用私钥时都必须输入密语,增强了私钥的安全性

三、共享密钥

        ssh-copy-id命令可以把本地公钥发送到指定的远程系统,-i选项可以指定特定的公钥文件地址,默认是~/.ssh/id_rsa.pub文件,如果该密钥受密语保护的话,SSH将在第一次请求时输入密语

ssh-copy-id  -i   .ssh/key-with-pass.pub   user@远程系统主机名  

四、ssh-agent密钥管理器

        如果您使用密语来保护私钥,则每次使用私钥进行身份验证时都必须输入密语。但是,您可以配置ssh-agent 密钥管理器来缓存密语。之后,每次使用 SSH时,ssh-aqent 密钥管理器都会替您提供密语。使用密钥管理器不仅方便,还能减少他人看到您的密语的机会,从而提高安全性。

        ssh-agent 密钥管理器可以配置为在您登录时自动启动。GNOME 图形桌面环境可以自动启动和配置ssh-agent 密钥管理器。如果您登录文本环境,则必须针对每个会话手动启动 ssh-agent 程序。使用以下命令来启动 ssh-agent 程序:

eval $(ssh-agent)

然后可以使用ssh-add命令添加私钥

ssh-add   默认从 ~/.ssh/id_rsa 添加私钥

ssh-add   .ssh/key-with-pass    从指定位置添加私钥

这样后面在访问远程系统时就不需要输入密语了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值