使用ssh公钥密钥登陆linux具体方法

在我们平时使用Linux系统时候,通常使用的Linux SSH登录方式是用户名加密码的登录方式,今天来探讨另外的一种相对安全的登录方式——密钥登录。我们知道SSH登录是用的RSA非对称加密的,所以我们在SSH登录的时候就可以使用RSA密钥登录,SSH有专门创建SSH密钥的工具ssh-keygen,下面为大家分享一下使用ssh公钥密钥登陆linux具体方法。

第一步:生成 ssh 公钥密钥对

首先,如果你没有安装OpenSSH,请先安装,我们现在的 linux 服务器默认都安装 openssh 的软件。 生成公钥密钥对是在管理服务器上生成的:

[root@server ~]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
#提示正在生成rsa密钥对
Enter file in which to save the key (/home/usrname/.ssh/id_dsa):
#询问公钥和私钥存放位置,默认位置回车即可
Enter passphrase (empty for no passphrase):
#询问输入私钥密语,输入密语
Enter same passphrase again:
#再次提示输入密语确认
Your identification has been saved in /home/usrname/.ssh/id_dsa.
#提示公钥和私钥已经存放在/root/.ssh/目录下
Your public key has been saved in /home/usrname/.ssh/id_dsa.pub.
The key fingerprint is:
x6:68:xx:93:98:8x:87:95:7x:2x:4x:x9:81:xx:56:94 root@server
#提示key的指纹

简单说明一下: -b 1024采用长度为1024字节的公钥/私钥对,最长4096字节,一般1024或2048就足够满足安全需要了,太长的话加密解密需要的时间也增长。 -t rsa  采用rsa加密方式的公钥/私钥对,除了rsa还有dsa方式,rsa方式最短不能小于768字节长度。 如果还需要使用更多其他参数请参考man ssh-keygen。

在生成密钥对的过程中你被询问:输入密码短句 Enter passphrase (empty for no passphrase) ,密码短句(passphrase)是你使用一个短语或者一句话作为密码输入,再由系统内部的加密或是散列算法生成虚拟密码后,进行下一步的认证。好处是增强了安全性不易被破解。看过很多文章,里面都把这个短句输入为空,也就是代表不使用密码短句。在这里我强烈要求你输入密码短句。有人会说使用密码短句后,登陆还要输入密码短句这样使用没有比使用用户名和密码登陆方便多少,我说请你不要急,接着看我的文章。 注意:如果你生成密钥对而不设置密码短语,那么如果你的私钥丢失了,那么就你的麻烦可能会比丢失用户名密码还严重。

第二步:拷贝你的公钥到被管理的服务器上

在你的管理服务器上把你的公钥拷贝到被管理服务器上要进行自动登陆的用户目录下。

[root@server ~]# scp .ssh/id_dsa.pub [email protected]:#比如你想使用用户peter登陆,则remote_usrname请以peter代替

改名和进行权限设置

登陆被管理的服务器,进入需要远程登陆的用户目录,把公钥放到用户目录的 .ssh 这个目录下(如果目录不存在,需要创建~/.ssh目录,并把目录权限设置为700),把公钥改名为authorized_keys2,并且把它的用户权限设成600。

[peter@client ~]$ ls
id_rsa.pub
[peter@client ~]$ mkdir ~/.ssh
#如果当前用户目录下没有 .ssh 目录,请先创建目录
[peter@client ~]$ chmod 700 ~/.ssh
[peter@client ~]$ mv id_rsa.pub ~/.ssh
[peter@client ~]$ cd ~/.ssh
[peter@client ~]$ cat id_rsa.pub >> authorized_keys2
[peter@client ~]$ rm -f id_rsa.pub
[peter@client ~]$ chmod 600 authorized_keys2
[peter@client ~]$ ls -l
total 4
-rw------- 1 peter peter 225 Oct 10 11:28 authorized_keys2

测试使用密钥对进行远程登陆

[root@server ~]# ssh [email protected]
Enter passphrase for key '/root/.ssh/id_rsa'#提示输入密码短语,请输入刚才设置的密码短语
Last login: Sun Oct 10 11:32:14 2010 from 192.168.0.1
[peter@client ~]$

如果你不能用正确的登录,应该重新检查一下你的authorized_keys2的权限。

使用 ssh-agent(ssh代理)自动输入密码短语

牢记你的“密码短句”,现在你可以用你的密钥而不是密码来登录你的服务器了,但是这样仍然没有省什么事,你还是要输入密钥的“密码短语”。有更简便的方法吗?答案就是采用SSH代理(ssh-agent),一个用来帮你记住“密码短语”的程序。 ssh-agent是OpenSSH中默认包括的ssh代理程序。

登陆管理服务器

[root@server ~]# ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2148; export SSH_AGENT_PID;
echo Agent pid 2148;

当你运行ssh-agent,它会打印出来它使用的 ssh 的环境和变量。要使用这些变量,有两种方法,一种是手动进行声明环境变量,另一种是运行eval命令自动声明环境变量。

方法一:手动声明环境变量

[root@server ~]# SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;
[root@server ~]# SSH_AGENT_PID=2148; export SSH_AGENT_PID;
[root@server ~]# printenv | grep SSH#检查 ssh 环境变量是否已经加入当前会话的环境变量
SSH_AGENT_PID=2148
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147

方法二:运行eval命令自动声明环境变量

[root@server ~]# eval `ssh-agent`
Agent pid 2157
[root@server ~]# printenv | grep SSH#检查 ssh 环境变量是否已经加入当前会话的环境变量
SSH_AGENT_PID=2148
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147

现在 ssh-agent 已经在运行了,但是 ssh-agent 里面是空白的不会有解密的专用密钥。我们要告诉它我们有私钥和这个私钥在哪儿。这就需要使用 ssh-add 命令把我们的专用密钥添加到 ssh-agent 的高速缓存中。

[root@server ~]# ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/user/.ssh/id_dsa:
#输入你的密码短语
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
[root@server ~]# ssh-add -l#查看 ssh代理的缓存内容
1024 72:78:5e:6b:16:fd:f2:8c:81:b1:18:e6:9f:77:6e:be /root/.ssh/id_rsa (RSA)

输入了密码短句,现在好了,你可以登录你的远程服务器而不用输入你的密码短语了,而且你的私钥是密码保护的。

[root@server ~]# ssh [email protected]
Last login: Sun Oct 10 11:32:45 2010 from 192.168.0.1
[peter@client ~]$

登陆服务器进行操作结束后,记得还要把 ssh-agent 关掉,不然其他人登陆后也可以远程了。

[root@server ~]# ssh-agent -kunset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 2148 killed;
[root@server ~]# ssh-add -l#查看一下,缓存里已经没有了密钥了
The agent has no identities.

当然了如果管理数量众多的服务器(服务器数量≥2位数),第一次上传公钥可能会是比较累的工作,但是以后就可以在维护工作中体会这种公钥密钥自动登陆的便利了。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/221894.html<

(0)
运维的头像运维
上一篇2025-04-15 06:06
下一篇 2025-04-15 06:08

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注