Centos7通过SSH使用密钥实现免密登录
日常开发中,难免会有登录服务器的操作,而通过ssh方式登录无疑是比较方便的一种方式。
如果登录较频繁,使用密钥实现免密登录无疑更是方便中的方便。因此本文就简单说一说如何实现免密登录。
一、安装配置ssh服务
默认情况下Centos7是安装了ssh服务的需要做的就是启动服务即可
当然,启动之前,可能需要对ssh服务进行一下基本配置,确保可以支持免密的登录
1 | vi /etc/ssh/sshd_config |
编辑ssh服务的配置文件,将下边红框中的部分前边的注释去掉
开启监听端口和地址
允许远程登录,允许免密登录
允许使用密码
以上操作完成之后,基本上就可以使用ssh各种登录了。
保存退出之后,重启(启动)sshd服务
1 | systemctl restart sshd |
服务配置完成之后,就开始向下执行了。
二、生成密钥公钥
1、服务器端,确认需要通过哪个账户(用户)免密登录,则切换到该用户
1 | sudo su - eleven |
当前切换到eleven账户,默认在eleven用户的默认用户目录
然后执行生成密钥公钥命令
1 | ssh -keygen -t rsa -C "任意字符(说明)一般邮箱用户名等" |
执行后,连续三次回车即可,完成密钥公钥文件的生成。
执行完成后,会在本地生成.ssh目录(默认隐藏,可以通过ls -a查看)
访问.ssh目录,可以看到id_rsa和id_rsa.pub两个文件
其中id_rsa是密钥文件,自己保存好不要公开,而id_rsa.pub文件是公钥,里边的内容可以告诉任何人
2、客户端生成密钥公钥
在客户端,在终端中,当前用户输入同样的命令ssh-keygen -t rsa -C "邮箱或者用户名"
操作和服务端完全一样,最终同样生成.ssh目录和id_rsa和id_rsa.pub两个文件。
到此,就完成了密钥和公钥的生成。
三、实现免密登录
1、服务器自己可以登录
先将本地的公钥文件复制到远程服务器上
1 | scp ~/. ssh /id_rsa .pub eleven@192.168.1.202: /home/eleven/id_rsa .pub |
将本地生成的公钥文件,通过scp命令,复制到远程服务器eleven用户的目录中
登录到远程服务器,切换到eleven用户
1 | cat id_rsa.pub >> . ssh /authorized_keys |
将客户端的公钥文件的内容追加到eleven用户目录的.ssh目录中的authorized_keys中(该文件不存在则创建新文件)
做到这里,就基本上完成了免密登录的配置。
但是,到客户端通过ssh eleven@192.168.1.202登录,依然提示需要输入密码,貌似没有效果。
那么问题在哪里呢?
一般只要确认操作过程没有任何问题和错误,并且步骤等不缺少,那么极有可能就是权限的问题
此时,需要修改两个权限
1 2 | chmod 600 authorized_keys chmod 700 . ssh |
这是linux的安全要求,权限不对,是不能让免密登录生效的。
到这里,就完成了免密的登录所有操作,可以在客户端通过ssh登录了。
并且,在第一次登录时会提示让输入(yes/no)直接输入yes即可。
登录成功以后,会在服务器的.ssh目录中生成一个known_hosts文件
记录每个登录的公钥,正常情况可以忽略,因为这个出了什么问题,删除该文件即可。
2、远程服务器自己不能登录
此时需要查看自己本地的id_rsa.pub文件的内容,并复制内容发给能访问远程服务器的人,让其在远程服务器的authorized_keys文件中加上你的id_rsa.pub的内容即可。
当有多客户端需要连接该远程服务器时,只要把所有客户端的id_rsa.pub内容都放到authorized_keys中即可。每个公钥占一行
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库