使用ssh公钥密钥自动登陆linux服务器

《每天一个Linux命令》 -- (5)通过sshkey密钥登录服务器 欢迎阅读《每天一个Linux命令》系列!在本篇文章中,将介绍通过密钥生成,通过公钥连接管理服务器。SSH 密钥是用于安全地访问远程服务器的一种方法。SSH 密钥由一对密钥组成:公钥和私钥。公钥存储在远程服务器上,私钥存储在本地计算机上。密钥管理: 公钥身份验证需要有效地管理密钥对。如果私钥丢失或泄露,可能会导致安全问题。初次设置复杂性: 初次设置公钥身份验证可能会相对复杂,特别是对于不熟悉密钥管理的用户来说。然而,一旦设置完成,后续的连接将更为简单。 阅读详情
导读针对linux管理员在维护众多服务器的时候,使用SSH公钥自动登录linux服务器,避免繁琐的用户名和密码的输入,节约登录多台服务器的时间,自动地达到同时登录多台服务器的目的。

作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分。但随着服务器的增多,每次登陆,系统都会提示输入用户名和密码,频繁的输入用户名和密码是一件让人很烦的事情。也许有人说可以用一些客户端工具,比如:SecureCRT 等,的确使用这些软件会方便很多,但是这些软件不是价格昂贵的商业软件就是依附于特定平台才能安装使用,所以我今天介绍的是使用 ssh 自带的功能实现使用客户端工具所能带来的便利,那就是使用 ssh 的公钥密钥实现自动登陆。
测试环境:
操作系统:Red Hat Enterprise Linux AS release 4 (Nahant Update 8)
软件版本:OpenSSH_3.9p1, OpenSSL 0.9.7a
管理服务器:ip:192.168.0.1 机器名:server
被管理服务器:ip:192.168.0.2 机器名:client

第一步:生成 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 remote_usrname@192.168.0.2:
#比如你想使用用户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 peter@192.168.0.2
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 peter@192.168.0.2
Last login: Sun Oct 10 11:32:45 2010 from 192.168.0.1
[peter@client ~]$

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

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

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

SSH中的安全 | 配置SSH公钥登录及常见错误 使用公钥登录,也被描述为「SSH 免密码登录」,但这只是他的附赠优点。 阅读详情

相关推荐

GIT码云SSH公钥配置

GIT码云是一个代码托管平台,可以用来管理和协作开发项目。SSH公钥在这个过程中起到了重要的作用。

是个非常热爱生活、乐观、奋斗、努力的逗比青年 3415

公钥私钥详细讲解,SSH密钥远程连接服务器,代码,命令详解

公钥私钥详细讲解,并用现实生活进行举例。Windows,cmd命令行生成密钥对连接服务器,mobaxtem本地终端,生成密钥并连接服务器。连接过程讲解,命令解析,代码演示,修改ssh配置文件禁止用户使用密码进行登录。

h1008685的博客 3万+

HWSD2.0土壤数据处理实战:从下载到属性提取全流程解析

本文详细解析了HWSD2.0全球土壤数据库从数据下载、属性筛选到GIS空间连接与提取的全流程实战方法。重点介绍了如何利用ArcGIS Pro等工具,将土壤单元编码与黏粒含量等属性表关联,最终生成全球土壤属性专题栅格图,为农业规划与生态研究提供关键数据支撑。

weixin_29214691的博客 610

ssh 公钥私钥原理

所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。(2)用户使用这个公钥,将登录密码加密后,发送到远程主机。

weixin_38172229的博客 7492

从零搭建openEuler ARM64开发测试环境:手把手教你用libvirt+KVM配置虚拟机(含VNC远程安装)

本文详细介绍了如何在ARM64平台上从零搭建openEuler开发测试环境,涵盖libvirt和KVM配置虚拟机的完整流程,包括环境准备、存储配置、网络优化、XML配置详解以及VNC远程安装。特别针对华为欧拉(openEuler)系统进行了优化,帮助开发者快速构建高效的ARM架构虚拟化环境。

weixin_30545945的博客 586

手把手教你自制Type-C OTG转换器(附电路图及避坑指南)

本文详细指导如何自制Type-C OTG转换器,包括核心电路设计、元器件选型及焊接技巧,特别强调硬件检测电路的关键作用。通过实测数据和避坑指南,帮助开发者解决兼容性问题,实现高效数据传输。

weixin_27038245的博客 713

[zz] 使用ssh公钥密钥自动登陆linux服务器

目录 1.生成密匙对 2.拷贝公匙到远程机 3.启动登陆代理这种方法处理后每次需要运行命令:ssh-add ~/.ssh/id_dsa 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分。但随着服务器的增多,每次登陆,系统都会提示输入用户名和密码,频繁的输入用户名和密码是一件让人很烦的事情。也许有人说可以用一些客户端工具,比如:Secure...

weixin_30655569的博客 148

ADS 2013安装教程

1.2013和2014安装过程是一样的,运行ads2013_06_shp_windows文件进行安装 2.点击“NEXT”。 3.选择I accept,然后点击“NEXT”。 4.选择“complete”,然后点击“NEXT”。 5.选择安装路径,最好默认安装路径,安装路径不要有中文,然后点击“NEXT”。 6.点击“NEXT”. 7.如下路径默认安装,然后点击“NEXT”。 8.点击“NEXT”。 ...

谢谢关注“小鱼教你模数电”,各平台同号 6009

【转】使用ssh公钥密钥自动登陆linux服务器

【转自】http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分。但随着服务器的增多,每次登陆,系统都会提示输入用户名和密码,频繁的输入用户名和密码是一件让人很烦的事情。也许有人说可以用一些客户端工具,比如:SecureCRT 等,的确使用这些软件会方...

178

YOLOv11增量学习数据回放优化:解决新类别引入时的灾难性遗忘问题

本文提出了一种基于生成式潜在回放和提示学习的YOLOv11增量学习系统,旨在解决目标检测中的灾难性遗忘问题。系统采用改进的YOLOv11骨干网络,结合条件变分自编码器生成旧类别特征,并通过渐进式提示调优模块实现高效参数更新。关键技术包括:1) C3k2模块和C2PSA注意力增强特征提取;2) CLIP引导的VAE潜在空间数据回放;3) 类特定与超类别提示相结合的增量调优策略;4) 自适应特征金字塔与显式视觉中心融合机制。实验表明,该方法在保持原有检测性能的同时,显著降低了增量学习过程中的遗忘现象。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2103

【Python爬虫(1)】专栏开篇:夯实Python基础

要想熟练掌握 Python 爬虫技术,扎实的 Python 基础是必不可少的。这就好比建造高楼大厦,Python 基础就是那稳固的基石。只有打好了这个基础,我们才能在爬虫的学习道路上稳步前行,理解并运用各种爬虫技术和框架。

邓邓子的博客 2026

linux ssh 信任,linux ssh单向信任及多节点互信

通常在linux下使用ssh的时候我们需要目标机器开启了sshd的服务然后用 ssh客户端连接过去以指定的用户去登陆上去,正常情况下我们需要输入登陆密码才可以 成功登陆,但是在使用集群或者类似场景下我们有很多的的机器需要通过ssh间相互随机的访问,如果一个一个的输入密码那太繁琐了。由此我们就需要建立免密钥的登陆方式。单向信任配置A服务器:192.168.0.101B服务器:192.168.0.10...

weixin_35186171的博客 870

全面解读 SAP Business Data Cloud

SAP 在 2025 年初正式推出(简称BDC),它把、以及全新的统一封装为一项完全托管的 SaaS 服务,配套交付“语义层 + 数据产品 + 智能应用”三层能力,为企业构建真正贴近业务语境的 “Business Data Fabric”。这一方案不仅解决了跨系统数据碎片化、治理难及 AI 训练数据可信度低的问题,还为现有 BW 客户、S/4HANA以及第三方工作负载提供云上现代化路径和零拷贝数据共享机制。本文将围绕技术架构、核心组件、业务场景、迁移路线及未来展望展开,以 Henkel 等真实案例佐证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 909

最简单的ssh无密登陆

第一步:生成密钥 ssh-keygen -t rsa 第二步:将密钥传输到目标机器上 ssh-copy-id -i .ssh/id_rsa.pub name@ip 第三步:远程登陆一次目标机器 然后就可以无密登陆了。

cengjch2011的专栏 627

OpenCASCADE:Direct3D CSharp 示例

OpenCASCADE:Direct3D CSharp 示例OpenCASCADE:Direct3D CSharp 示例 OpenCASCADE:Direct3D CSharp 示例 此示例演示了如何在使用CSharp和Windows Presentation Foundation (WPF)编写的.Net应用程序中使用 OCCT 和 DirectX 库。 .Net、OCCT (C++) 和 DirectX 级别之间的连接由用 C++/CLI 编写的代理库OCCProxy和D3DProxy提供。代理库OCC

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1824

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ssh 无密码登陆

一、单向无密码访问 单向无密码访问远程服务器操作比较简单,比如服务器A需要无密码访问服务器B(A–>B),那么只需要在服务器A生成密钥对,将生成的公钥上传到服务器B的相关用户目录下的.ssh目录中(没有的话手动创建,注意,它的目录权限是700),并将公钥文件名称改为authorized_keys(注意,这个文件的权限应该是644),请注意.ssh目录及authorized_keys文件的权限

yaoyaodexiaozhu的博客 363

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Linux服务器配置免密登陆

Linux服务器配置免密登陆 在工作中,有时候需要在两台机子之间配置免密登陆。可以按以下步骤进行 在本地机器上执行 选择对应的账户登陆本地机器 ssh-keygen -t rsa (然后一路回车) 在用户的家目录下会生成.ssh目录 将生成的公钥复制到远程机器上的~/.ssh/authorized_keys中,在本地机执行 ssh-copy-id -i ~/.ssh/id_rsa.pub...

wyy19930811的博客 647

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Linux学习须牢记这几点
下一篇: 使用ln命令在Linux系统中创建连接文件
学习Linux棒棒哒
博客等级 码龄16年 12粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值