实现Linux的ssh免密登录实操保姆级教程

一、业务需求

有多台服务器,每天都需要使用服务器进行一些必要的操作,但每次都需要输入密码会很繁琐且密码太多也记不住,密码给其他人员存在泄密风险(因此想要实现免密登录);且我们在多台服务器之间进行高可用集群部署的时候需要实现免密码登录。

二、实现Linux的ssh免密登录流程

修改Linux上的ssh的默认端口号------及其客户端使用ssh连接不上Linux问题排查解决https://blog.csdn.net/xiaochenXIHUA/article/details/152115750?spm=1001.2014.3001.5501

2.1、在需要免密登录的服务器上生成ssh密钥对

bash 复制代码
#在Linux中生成ssh密钥对的三种方法

#密钥生成示例1(默认生成2048位的rsa密钥对)
ssh-keygen

#密钥生成示例2(生成4096位不带密码短语的rsa密钥对)【推荐使用】
#注意:这里的密钥注释通常是邮箱名称(your_email@example.com)也可以自行设置,只要能够区分出来就行;
# -N后面的是设置密钥的访问密码,可以设置也可以不设置
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -N "qwer1234"

#密钥生成示例3(生成ed25519类型的密钥对)【十分推荐使用】
#注意:这里的密钥注释通常是邮箱名称(your_email@example.com)也可以自行设置,只要能够区分出来就行
ssh-keygen -t ed25519 -C "your_email@example.com"

#更改私钥密码访问密码(系统会提示先输入旧密码,在输入新密码)
ssh-keygen -p -f /root/.ssh/id_rsa

我们这里以ed25519算法生成的密钥为例进行演示说明,详细实操流程如下:

bash 复制代码
#1-在需要实现无密码登录的服务器上生成密钥对(其中ck@163.com是邮箱地址,可根据自己需要自定义内容,这有助于标识密钥的用途或拥有者)
ssh-keygen -t ed25519 -C "ck@163.com"

#2-进入密钥对生成的路径【/root/.ssh】并查看该路径下的所有文件,其中【id_ed25519】是私钥文件;【id_ed25519.pub】是公钥文件
cd /root/.ssh
ll -a

2.2、将公钥添加到需ssh免密登录的远程服务器上

bash 复制代码
#将公钥添加到需ssh免密登录的远程服务器上
ssh-copy-id -i /root/.ssh/id_rsa.pub user@remote-hostIP

#若远程Linux服务器的SSH端口不是默认的22则需要指定端口号【-p 端口】
ssh-copy-id -i /root/.ssh/id_rsa.pub -p 端口号 user@remote-hostIP


#如:我这里生成密钥对的服务器IP是【192.168.1.40】,还需要ssh免密登录的服务器IP有【192.168.1.41】【192.168.1.42】
ssh-copy-id -i /root/.ssh/id_ed25519.pub -p 22222 root@192.168.1.40
ssh-copy-id -i /root/.ssh/id_ed25519.pub -p 22222 root@192.168.1.41
ssh-copy-id -i /root/.ssh/id_ed25519.pub -p 22222 root@192.168.1.42

ssh-copy-id -i /root/.ssh/id_ed25519.pub -p 22222 ck@192.168.1.41

2.3、测试ssh免密登录到远程服务器是否成功

bash 复制代码
#测试ssh免密登录远程服务器的方法【ssh 免密登录的服务器IP】
ssh 192.168.1.41
ssh root@192.168.1.41

#若远程服务器的端口不是默认的22端口则需要指定端口【ssh -p 免密登录服务器的端口号 用户名称@免密登录服务器的IP】(如:可以使用ck用户免密登录远程服务器192.168.1.41且该服务器的ssh端口是22222)
ssh -p 22222 ck@192.168.1.41


#登录到服务器后查看当前是哪个用户及其当前服务器的信息
whoami
hostnamectl
exit

到这里如上图所示可以正常无需密码直接登录则表示配置ssh的免密码登录成功了,恭喜你!

注意:

《1》需要检查【/root/.ssh】目录的权限是不是【700】(即:只有文件所有者可以读写和执行);

《2》检查【/root/.ssh/ authorized_keys】与【/root/.ssh/ id_ed25519】权限是不是【600】(即:只有文件所有者可以读写)。

bash 复制代码
#若测试ssh免密登录不成功则需要检查【/root/.ssh】目前权限是不是【700】;【/root/.ssh/authorized_keys】【/root/.ssh/id_ed25519】权限是不是【600】

#将【/root/.ssh】目录权限修改为【700】
chmod 700 /root/.ssh

#2-将【/root/.ssh/authorized_keys】【/root/.ssh/id_ed25519】权限修改为【600】
cd /root/.ssh
chmod 600 authorized_keys id_ed25519

注意:若想要实现在Windows系统上使用第三方ssh工具(如:WindTerm)连接到这台192.168.1.40服务器上,则需要将该服务器上的私钥【/root/.ssh/id_ed25519】下载下来,指定后就可以登录了,如下图所示:

三、线上Linux服务器的优化配置策略

线上Linux服务器的优化设置、系统安全与网络安全策略https://coffeemilk.blog.csdn.net/article/details/149913938

相关推荐
Johny_Zhao1 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
chlk1233 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑3 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件3 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号3 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash4 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI4 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行5 天前
Linux和window共享文件夹
linux
木心月转码ing5 天前
WSL+Cpp开发环境配置
linux
埃博拉酱6 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code