Linux设置SSH免密码密钥登录
文章目录
- 设置SSH免密码密钥登录
- 第一步: 生成SSH密钥对(在客户端操作)
- 方式一:Windows 10/11 内置的 OpenSSH 客户端(推荐)
- 常用选项:
- 密钥算法选择建议
- 生成秘钥
- 方式二:借用Xshell工具生成
- 第二步:将公钥上传到服务器
- 第三步: 配置SSH服务器(在服务器上操作)
- 测试连接
- 注意事项
- 安全建议:在禁用密码登录前,请确保密钥登录正常工作
- 备份:妥善保管私钥(~/.ssh/id_rsa),丢失后将无法登录。
- 多用户:如果要为多个用户设置,请在每个用户的家目录下重复上述步骤
- 权限:`确保~/.ssh目录权限为700,authorized_keys文件权限为600`
- 故障排除
设置SSH免密码密钥登录
第一步: 生成SSH密钥对(在客户端操作)
方式一:Windows 10/11 内置的 OpenSSH 客户端(推荐)
使用ssh-keygen软件生成
ssh-keygen [选项]
常用选项:
-t:指定密钥类型(如 rsa, ed25519, ecdsa)-b:指定密钥长度(仅对 RSA/ECDSA 有效)-C:添加注释(通常用于标识密钥用途)-f:指定密钥保存路径-N:直接设置密钥密码(避免交互式输入)-p:更改现有密钥的密码-q:静默模式(不显示输出)
- 常用组合指令
| 命令 | 用途 |
|---|---|
ssh-keygen -t rsa -b 4096 | 生成 RSA 4096 密钥 |
ssh-keygen -t ed25519 | 生成 ed25519 密钥(推荐) |
ssh-keygen -p -f ~/.ssh/id_rsa | 更改密钥密码 |
ssh-keygen -l -f ~/.ssh/id_rsa.pub | 查看密钥指纹 |
ssh-copy-id user@host | 复制公钥到远程服务器 |
密钥算法选择建议
-
ed25519:
-
最安全、最现代的算法
-
密钥短、性能好
-
需要较新的 SSH 客户端/服务器支持
查询服务器支持的算法ssh -Q key
root@45:~# ssh -Q key ssh-ed25519 ssh-ed25519-cert-v01@openssh.com sk-ssh-ed25519@openssh.com sk-ssh-ed25519-cert-v01@openssh.com ecdsa-sha2-nistp256 ecdsa-sha2-nistp256-cert-v01@openssh.com ecdsa-sha2-nistp384 ecdsa-sha2-nistp384-cert-v01@openssh.com ecdsa-sha2-nistp521 ecdsa-sha2-nistp521-cert-v01@openssh.com sk-ecdsa-sha2-nistp256@openssh.com sk-ecdsa-sha2-nistp256-cert-v01@openssh.com ssh-dss ssh-dss-cert-v01@openssh.com ssh-rsa ssh-rsa-cert-v01@openssh.com -
-
RSA 4096:
-
兼容性最好
-
密钥较长
-
仍然是安全的选择
-
-
避免使用:
-
RSA 2048(强度不足)
-
DSA(已不安全)
-
ECDSA(除非你知道为什么需要它)
-
生成秘钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
或者使用更安全的ed25519算法:
ssh-keygen -t ed25519 -C "your_email@example.com"
按提示操作(可以直接回车使用默认设置,也可以设置密码保护密钥)。

方式二:借用Xshell工具生成
-
步骤 1:打开 Xshell 密钥生成工具
- 打开 Xshell。
- 点击菜单栏 工具 (Tools) → 新建用户密钥生成向导 (New User Key Wizard)。

-
步骤 2:选择密钥类型和长度
-
密钥类型 (Key Type):
-
RSA(兼容性好,推荐 4096 位)
-
ED25519(更安全、更快,推荐优先使用)
-
密钥长度 (Key Length):
-
RSA:选择 4096(默认 2048,但 4096 更安全)
-
ED25519:固定长度(无需选择)
-
Xshell 密钥类型选择

-
-
步骤 3:生成密钥对
-
点击 下一步 (Next),Xshell 会自动生成密钥对。
-
生成完成后,会显示:
-
公钥 (Public Key):用于上传到服务器
-
私钥 (Private Key):保存在本地,需严格保密

-
-
步骤 4:设置密钥名称和密码(可选)
-
密钥名称 (Key Name):
-
给密钥取一个易识别的名字(如 my_server_key)。
-
密码 (Passphrase):
-
可选,但建议设置(即使私钥泄露,仍需密码才能使用)。
-
输入两次密码确认。

-
-
步骤 5:导出公钥和私钥(可选)
-
保存公钥 (Save as Public Key File):
-
点击 保存为文件 (Save as File),导出 .pub 文件(用于上传到服务器)。

-
保存私钥 (Save as Private Key File):
-
默认保存在 Xshell 的密钥管理器中,也可导出为 .ppk 或 .pem 格式(用于其他客户端如 PuTTY)。

-
第二步:将公钥上传到服务器
- 方法一:使用ssh-copy-id(Linux推荐,Windows上默认不支持)
ssh-copy-id username@server_ip
系统会提示输入密码,输入后公钥会自动添加到服务器的~/.ssh/authorized_keys文件中。
- 方法二:手动复制
如果ssh-copy-id不可用,可以手动操作:
查看公钥内容:
cat ~/.ssh/id_rsa.pub
登录服务器:
ssh username@server_ip
在服务器上创建.ssh目录(如果不存在):注意权限
mkdir -p ~/.ssh
chmod 700 ~/.ssh
将公钥添加到authorized_keys:注意权限
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
或直接通过xftp上传文件到~/.ssh目录,把公钥文件改名为authorized_keys
注意:如果用root账号链接的xftp,上传文件会所有者和用户组都是属于root,需要修改为对应用户账号所有和所有组,否则无法使用

第三步: 配置SSH服务器(在服务器上操作)
- CentOS/RHEL系统:
sudo vi /etc/ssh/sshd_config
- Debian/Ubuntu系统:
sudo nano /etc/ssh/sshd_config
确保以下设置:
PubkeyAuthentication yes # 开启允许秘钥登录
AuthorizedKeysFile .ssh/authorized_keys # 默认为家目录下.ssh/authorized_keys
PasswordAuthentication no # 禁用密码登录(确保密钥登录工作后再设置此项)
ChallengeResponseAuthentication no
UsePAM no
保存后重启SSH服务:
- CentOS 7/RHEL 7:
sudo systemctl restart sshd
- CentOS 6/RHEL 6:
sudo service sshd restart
- Debian/Ubuntu:
sudo systemctl restart ssh
测试连接
从客户端尝试连接:
- Window cmd连接
ssh username@server_ip
如果设置正确,应该可以直接登录而无需输入密码。

- Xshell连接测试

注意事项
安全建议:在禁用密码登录前,请确保密钥登录正常工作
备份:妥善保管私钥(~/.ssh/id_rsa),丢失后将无法登录。
- 如果设置了 passphrase 但忘记密码,密钥将无法恢复,必须重新生成
- 为不同服务使用不同密钥对更安全
- 考虑使用 ssh-agent 管理密钥密码
多用户:如果要为多个用户设置,请在每个用户的家目录下重复上述步骤
权限:确保~/.ssh目录权限为700,authorized_keys文件权限为600
root上传文件到用户账号中或由其他用户账号上传到不是自己家目录只,必须修改对应的权限才能使用
故障排除
-
检查/var/log/secure(CentOS)或/var/log/auth.log(Debian)中的错误信息
-
临时启用密码登录并检查配置
-
确保SELinux(CentOS)没有阻止访问(可以尝试setenforce 0临时禁用测试)
sudo setenforce 0 ` # 将 SELinux 设置为 permissive 模式(临时方案,重启后恢复) -
永久解决方案
- 方法一: 添加 SELinux 策略
sudo ausearch -c 'sshd' --raw | audit2allow -M my-sshd sudo semodule -i my-sshd.pp- 方法二:恢复正确的文件上下文
sudo restorecon -Rv ~/.ssh sudo restorecon -Rv /home
相关文章:
Linux设置SSH免密码密钥登录
文章目录 设置SSH免密码密钥登录第一步: 生成SSH密钥对(在客户端操作)方式一:Windows 10/11 内置的 OpenSSH 客户端(推荐)常用选项:密钥算法选择建议生成秘钥 方式二:借用Xshell工具…...
深度剖析HTTP协议—GET/PUT请求方法的使用-构造请求的方法
活动发起人小虚竹 想对你说: 这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!…...
GPU算力哪家好?GpuGeek推出高性能GPU云服务
在人工智能和深度学习领域,GPU算力租赁已成为推动技术创新的关键因素。随着越来越多的企业和个人开发者投身于AI研究和应用开发,如何高效、灵活地获取GPU算力成为了一个亟待解决的问题。GpuGeek作为一站式AI基础设施平台,凭借其独特的优势&am…...
蓝桥杯算法实战分享
蓝桥杯算法实战分享 蓝桥杯是国内知名的程序设计竞赛,涵盖算法、数据结构、编程技巧等多个领域。本文将从实战角度分享蓝桥杯算法竞赛的常见题型、解题思路和优化技巧,帮助参赛者更好地备战。 1. 常见题型与解题思路 蓝桥杯的题型主要包括以下几类&…...
【每日算法】Day 9-1:贪心算法精讲——区间调度与最优选择(C++实现)
掌握高效决策的核心思想!今日深入解析贪心算法的底层逻辑,聚焦区间调度与最优选择两大高频场景,结合大厂真题与严谨证明,彻底掌握“局部最优即全局最优”的算法哲学。 一、贪心算法核心思想 贪心算法(Greedy Algorit…...
构建稳健的机器学习系统:应对数据偏移挑战
构建稳健的机器学习系统:应对数据偏移挑战 1. 引言:数据偏移类型与挑战 在机器学习系统从实验室到生产环境的转变过程中,数据偏移(Data Shift)是最常见也最具挑战性的问题之一。所谓数据偏移,指的是训练数…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.3前馈网络(FFN)与激活函数(GELU)优化
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.3 前馈网络(FFN)与激活函数(GELU)优化1. 前馈网络(FFN)的架构设计与数学原理1.1 FFN在Transformer中的核心作用2. GELU激活函数的数学特性与优化2.1 GELU的数学形式与近似计算3. 逐行代码实现…...
3个版本的Unity项目的异同
根据搜索结果,以下是关于 SPR 3D Sample Scene(URP)、SPR Universal 3D 和 3D(Built-In Render Pipeline) 的定义及区别分析: 1. 定义与用途 SPR 3D Sample Scene(URP) 是基于 Universal Render Pipeline (URP) 的 3D 示例场景,专为展示 URP …...
组态软件之万维组态介绍(web组态、html组态、vue2/vue3组态、组态软件、组态编辑器)
一、什么是组态软件 组态软件是一种用于创建、配置和管理监控和控制系统的软件工具。组态是指不需要编写计算机程序、通过配置的方式完成工业应用开发的系统。它们通常用于工业自动化领域,用于实时监视和控制工业过程。组态软件提供了丰富的功能和工具,使…...
Linux系统perf命令使用介绍,如何用此命令进行程序热点诊断和性能优化
Linux perf 命令使用指南:程序热点诊断与性能优化 perf 是 Linux 系统上一个强大的性能分析工具,它能够帮助开发者进行程序热点诊断和性能优化。下面详细介绍 perf 的使用方法。 1. perf 简介 perf (Performance Event Counters) 是 Linux 内核提供的…...
《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:Linux运维实战总结 一、背景信息 在ubuntu 22.04中,pam_tally2模块已被弃用,取而代之的是pam_faillock模块。因此…...
AI Agent开发大全第八课-Stable Diffusion 3的本地安装全步骤
前言 就像我们前面几课所述,本系列是一门体系化的教学,它不像网上很多个别存在的单篇博客走“吃快餐”模式,而是从扎实的基础来带领大家一步步迈向AI开发高手。所以我们的AI课程设置是相当全面的,除了有牢固的基础知识外还有外面互联网上也搜不到的生产级实战。 前面讲过…...
Spring MVC 深度解析:原理、源码剖析与实战
Spring MVC 深度解析:原理、源码剖析与实战 在 Spring 体系中,Spring MVC 作为 Web 层的核心框架,承担着请求处理、参数解析、视图渲染等关键任务。今天,我们将深入剖析 Spring MVC 的执行流程,结合 源码分析…...
347 前k个高频元素
步骤1:统计元素频率 使用哈希表(unordered_map)统计每个元素的出现次数,时间复杂度为 O(n)。 步骤2:构建最小堆维护Top K 优先队列(最小堆):用priority_queue维护当前频率最高的k…...
BUUCTF-web刷题篇
1.EASYSQL破解密码 万能公式: 1 and 11 1 and 11 1 or 11 1 or 11 解释:payload SELECT * FROM tables WHERE username1 or 11 and password1 or 11 优先级排序:and 优先级高于 or,所以要计算 and 然后再计算 or username1…...
LeetCode 第31~33题
目录 LeetCode 第31题:下一个排列 LeetCode 第32题:最长有效括号 LeetCode 第33题:搜索旋转排序数组 LeetCode 第31题:下一个排列 题目描述 整数数组的一个排列就是将所有成员以序列或线性顺序排列。例如arr[1,2,3],以…...
【NLP 44、实践 ⑪ 用Bert模型结构实现自回归语言模型的训练】
目录 数据文件 一、模型定义 1.模型初始化 代码运行流程 2.前向传播,计算损失 ⭐ 代码运行流程 二、加载语料 代码运行流程 三、 随机生成样本 代码运行流程 四、建立模型 五、采样策略选择 代码运行流程 六、模型效果测试 代码运行流程 七、模型训练 代码运行流程 …...
Go 语言规范学习(1)
文章目录 IntroductionNotation示例(Go 语言的 if 语句): Source code representationCharacters例子:变量名可以是中文 Letters and digits Lexical elementsCommentsTokensSemicolons例子:查看程序所有的token Ident…...
ShapeCrawler:.NET开发者的PPTX操控魔法
引言 在当今的软件开发领域,随着数据可视化和信息展示需求的不断增长,处理 PPTX 文件的场景日益频繁。无论是自动化生成报告、批量制作演示文稿,还是对现有 PPT 进行内容更新与格式调整,开发者都需要高效的工具来完成这些任务。传…...
微信小程序如何接入直播功能
一、小程序直播开通背景 1.政府资质要求 政府的要求,小程序开通直播需要注册主体具备互联网直播的资质,普通企业需要《信息网络传播视听节目许可证》,表演性质的直播需要《网络文化经营许可证》,政府主体需要《社会信用代码》及…...
ArrayList<E>案例//定义一个方法,将价格低于3000的手机信息返回
import java.util.ArrayList;public class ArrayListphone {public static void main(String[] args){//定义一个方法,将价格低于3000的手机信息返回Phone p1new Phone("小米",1000);Phone p2new Phone("苹果",8000);Phone p3new Phone("锤…...
基于Spring Boot的停车场管理系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
慧通测控汽车智能座舱测试技术
一、引言 随着科技的飞速发展,汽车正从单纯的交通工具向智能化移动空间转变。智能座舱作为这一转变的核心体现,融合了多种先进技术,为用户带来前所未有的驾驶体验。从简单的信息娱乐系统到高度集成的人机交互、智能驾驶辅助以及车辆状态监测…...
Qt进程间通信:QSharedMemory 使用详解
1. 什么是 QSharedMemory? QSharedMemory 是 Qt 中用于进程间共享内存的类。它允许多个进程共享一块内存区域,从而避免数据传输时的 IO 操作,提高通信速度。通过共享内存,多个进程可以直接读写这块内存,而无需经过文件…...
kettle插件-rabbitmq插件
场景:kettle本身可以直接链接rabbitmq,但是需要配置rabbitmq开启mqtt协议,本次讲解下自定义开发组件RabbitMQ consumer,无需开启mqtt协议即可使用。 1、docker 安装rabbitmq 1)下载镜像 docker pull rabbitmq 2&…...
为Windows10的WSL Ubuntu启动sshd服务并使用Trae远程连接
Windows10的WSL Ubuntu,使用起来非常方便,但是美中不足的是,无法从Windows主机ssh到Ubuntu 。 解决的方法是在Ubuntu安装sshd服务 Ubuntu安装sshd服务 执行命令 sudo apt install openssh-server 安装好后,先本地测试&#x…...
【C#.NET】VS2022创建Web API项目
C# Web API 是一种基于 .NET 平台(包括但不限于.NET Framework 和 .NET Core)构建 HTTP 服务的框架,用于创建 RESTful Web 服务。REST(Representational State Transfer)是一种软件架构风格,它利用HTTP协议…...
体育直播系统趣猜功能开发技术实现方案
功能概述 趣猜功能是“东莞梦幻网络科技”体育直播系统源码中的互动功能,主播可以发起竞猜题目,观众使用虚拟货币进行投注,增加直播间的互动性和趣味性。所有货币均为虚拟货币,通过系统活动获取,不可充值提现。 数据…...
33.[前端开发-JavaScript基础]Day10-常见事件-鼠标事件-键盘事件-定时器-案例
1 window定时器 window定时器方法 setTimeout的使用 setInterval的使用 2 轮播消息提示 案例实战一 – 轮播消息提示 3 关闭隐藏消息 案例实战二 – 关闭隐藏消息 4 侧边栏展示 案例实战三 – 侧边栏展示 5 tab切换实现 案例实战四 – 登录框(作业)…...
C# 多标签浏览器 谷歌内核Csharp
采用框架 :FBrowserCEF3lib 视频演示:点我直达 成品下载: https://wwms.lanzouo.com/iYOd42rl8vje...
