当前位置: 首页 > news >正文

在 Windows 上使用 SSH 密钥访问 Linux 服务器

本章目录:

    • 前言
    • 1. 准备工作
    • 2. 生成 SSH 密钥对
      • 步骤 1:打开命令行
      • 步骤 2:运行 `ssh-keygen` 命令
      • 步骤 3:选择密钥保存位置
      • 步骤 4:设置密钥密码(可选)
      • 步骤 5:生成密钥对
    • 3. 查看生成的密钥文件
    • 4. 将公钥添加到 Linux 服务器
      • 步骤 1:复制公钥
      • 步骤 2:在 Linux 服务器上配置公钥
      • 步骤 3:验证配置
    • 5. 完成免密登录
    • 6. 常见问题
      • 1. Permission denied (publickey) 错误
      • 2. 如何更换密钥
    • 总结


前言

在日常的开发或运维工作中,使用 SSH 密钥进行身份验证,避免了每次都输入密码的麻烦。本文将详细介绍如何在 Windows 系统上生成 SSH 密钥对,并将公钥添加到 Linux 服务器上,以便通过 SSH 免密登录。


1. 准备工作

如果你需要通过 SSH 访问 Linux 服务器,那么首先需要生成一对 SSH 密钥(公钥和私钥)。通常推荐使用 RSA 算法生成密钥对。生成的密钥将存储在 Windows 本地,之后将公钥上传到远端的 Linux 服务器,以实现无密码登录。

2. 生成 SSH 密钥对

步骤 1:打开命令行

首先,打开 Windows 的命令行(CMD)。可以按下 Win + R 键,然后输入 cmd,按下回车进入命令行界面。

步骤 2:运行 ssh-keygen 命令

在命令行中输入以下命令:

ssh-keygen

你也可以指定生成 RSA 密钥对:

ssh-keygen -t rsa

步骤 3:选择密钥保存位置

执行命令后,会提示你输入保存密钥的文件位置。默认情况下,密钥会保存在 C:\Users\XXX\.ssh\id_rsa 文件中(XXX 是你的用户名)。如果你希望保存到其他位置,可以自行指定文件路径。如果直接按回车,密钥将保存在默认位置。

Enter file in which to save the key (C:\Users\XXX\.ssh\id_rsa):

步骤 4:设置密钥密码(可选)

接下来,命令行会要求你输入密钥的密码。你可以选择设置密码,也可以直接按回车跳过,生成一个无密码的密钥。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

步骤 5:生成密钥对

完成上述步骤后,密钥对将生成在指定的目录下。命令行输出将显示类似以下内容:

Your identification has been saved in C:\Users\XXX\.ssh\id_rsa.
Your public key has been saved in C:\Users\XXX\.ssh\id_rsa.pub.
The key fingerprint is:
SHA256:k/fZW0MI2odocmufHxptziPKxrNu4guuq0fTX/miWEs
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|           .     |
|         .+ o .  |
|    .  .S=oo o . |
|   o .  +=..oo.  |
|  . ...Eoo..o+...|
|   .. =o+*.oB..o.|
| .oooo.=B==+o+o  |
+----[SHA256]-----+

至此,你已经成功生成了一个 RSA 密钥对。

3. 查看生成的密钥文件

生成的密钥对将保存在以下路径:

C:\Users\XXX\.ssh\id_rsa  ==> 私钥文件
C:\Users\XXX\.ssh\id_rsa.pub  ==> 公钥文件
  • 私钥id_rsa)保留在本地,确保安全,绝对不能泄露。
  • 公钥id_rsa.pub)需要上传到你希望访问的 Linux 服务器中。

4. 将公钥添加到 Linux 服务器

步骤 1:复制公钥

打开 id_rsa.pub 文件,你可以看到类似以下内容:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArM..(长一串字符)... user@host

复制该文件中的所有内容(从 ssh-rsa 开始,到最后的 user@host 结束)。

步骤 2:在 Linux 服务器上配置公钥

  1. 使用 SSH 登录到你的 Linux 服务器(如果已经配置了密码登录)。

  2. 在服务器上,打开或创建 ~/.ssh/authorized_keys 文件:

    nano ~/.ssh/authorized_keys
    
  3. 将你复制的公钥粘贴到 authorized_keys 文件中。

  4. 保存并关闭文件。确保文件的权限设置正确,执行以下命令来设置权限:

    chmod 600 ~/.ssh/authorized_keys
    
  5. 确保 .ssh 目录本身的权限是 700:

    chmod 700 ~/.ssh
    

步骤 3:验证配置

现在,你已经将公钥添加到 Linux 服务器。尝试从 Windows 本地进行 SSH 登录,使用以下命令:

ssh username@linux_server_ip
  • username 是你在 Linux 服务器上的用户名。
  • linux_server_ip 是你要连接的服务器的 IP 地址。

如果配置成功,你将无需输入密码,即可直接登录到远程 Linux 服务器。

5. 完成免密登录

当你的公钥已经成功添加到 Linux 服务器并且权限配置正确时,你就可以通过 SSH 免密登录了。这样你无需每次都输入密码,操作会更加高效便捷。

6. 常见问题

1. Permission denied (publickey) 错误

如果你遇到 Permission denied (publickey) 错误,通常是因为以下原因之一:

  • 公钥未正确添加到服务器的 ~/.ssh/authorized_keys 文件中。

  • ~/.ssh 目录或 authorized_keys 文件的权限设置不正确,确保它们的权限为 700 和 600。

  • 服务器的 SSH 配置文件 /etc/ssh/sshd_config 中没有允许公钥认证。请检查是否有如下设置:

    PubkeyAuthentication yes
    

    修改后,重启 SSH 服务:

    sudo systemctl restart sshd
    

2. 如何更换密钥

如果你需要更换生成的密钥(例如,私钥泄露了),只需要重新生成一对新的密钥,并按照上述步骤替换 authorized_keys 文件中的公钥即可。


总结

通过以上步骤,你已经在 Windows 上成功生成了 SSH 密钥对,并将公钥添加到 Linux 服务器上,实现了免密登录。这不仅提升了安全性(避免明文密码泄露),也提高了工作效率。希望本文能帮助你顺利配置 SSH 无密码登录。


相关文章:

在 Windows 上使用 SSH 密钥访问 Linux 服务器

本章目录: 前言1. 准备工作2. 生成 SSH 密钥对步骤 1:打开命令行步骤 2:运行 ssh-keygen 命令步骤 3:选择密钥保存位置步骤 4:设置密钥密码(可选)步骤 5:生成密钥对 3. 查看生成的密钥文件4. 将…...

小白0基础centos8安装docker

总述:博主作为0基础小白将详细记录第一次从centos8的下载到安装docker的过程,包括中间出现的问题和解决方案 1Centos8下载 参见博文CentOS 8 的安装(官方安装、清华大学开源软件镜像站、阿里云镜像、网易镜像下的安装步骤)_cent…...

机器学习之逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告

逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告 目录 逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告1 逻辑回归算法1.1 概念理解1.2 算法导入1.3 算法优缺点 2 LogisticRegression理解2.1查看参数定义2.2 参数理解2.3 方法2.4基本格式 3 数据标准…...

openGauss连接是报org.opengauss.util.PSQLException: 尝试连线已失败

安装好高斯数据库后然后用java连接时报如下错误: 解决方法: 在openGauss数据库的安装路径下/opt/opengauss/data/single_node(这个路径根据自己实际情况变化)有个pg_hba.conf文件,修改里面host内容如下,我这里设置的是所有ip都能…...

详细的一条SQL语句的执行流程

SQL 语句的执行流程会因数据库管理系统的不同而略有差异,但一般来说,主要包括以下几个阶段: 查询解析 词法分析:数据库系统首先将输入的 SQL 语句按字符流进行扫描,依据词法规则把它分割成一个个的单词,如…...

适用于小白的程序报错提问 AI 模板

#工作记录 程序报错提问 AI 模板 1、你现在将扮演python专家,请保持连续对话,请基于你的专业知识修改代码并回答! 2、可以向我询问任何有利于你分析问题的信息。 3、你修改的程序代码,运行后报错,报错信息我放在最后…...

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象,有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据: 获取session获取数据: 请求存储: 请求获取: 数据正常打印&#xff1a…...

OFDM学习-(二)长短序列和PPDU整体数据处理流程

OFDM学习 (二)长短序列和PPDU整体数据处理流程 OFDM学习前言一、短序列短序列的作用 二、长序列三、PLCP/SIGNAL/DATA数据处理流程三、fpga实现STS模块LTS模块训练序列模块仿真波形 总结 前言 根据框图可以知道发射机这部分信号在DA转换之前&#xff0c…...

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大…...

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤: 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能(可选)6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具,尤其适合数据科学、机器…...

鸿蒙开发:实现键值数据库存储

前言 鸿蒙当中数据持久化存储,为我们提供了多种的实现方式,比如用户首选项方式,关系型数据库方式,键值型数据库方式,文件存储方式等等,对于数据量比较的小的,我们直接选择轻量级的用户首选项方式…...

WebGL 实践(一)开发环境搭建

WebGL 是一种基于 JavaScript 的 API,用于在浏览器中渲染 2D和3D 图形,很多场景都能用,例如游戏开发、数据可视化、在线教育和虚拟现实等应用领域。 零、基础知识 相关基础知识很重要,如果会html、JavaScript等技术掌握起来会更…...

在线机考|2024华为实习秋招春招编程题(最新)——第3题_PCB印刷电路板布线_300分(八)

题目内容 在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个MN的矩阵,每个位置(单元格)的值表示其源干扰度。 如果单元格的值为0,表示此位置没有干扰源;如果单…...

Spring源码分析之事件机制——观察者模式(三)

目录 自定义事件 事件监听器 事件发布者(服务层) 使用示例controller层 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 这两篇文章是这…...

C#实现画图,及实现图像运动,C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)C#之快速入门GDI+绘图 C#实现快速画图功能

下载源码 <-------- 在C#的世界里&#xff0c;GDI如同一位多才多艺的艺术家&#xff0c;以其强大的绘图能力&#xff0c;让开发者能够轻松地在应用程序中挥洒创意&#xff0c;绘制出丰富多彩的图形世界。GDI不仅支持基本的几何图形绘制&#xff0c;还能处理复杂的图像处理任…...

【51单片机零基础-chapter6:LCD1602调试工具】

实验0-用显示屏LCD验证自己的猜想 如同c的cout,前端的console.log() #include <REGX52.H> #include <INTRINS.H> #include "LCD1602.h" int var0; void main() {LCD_Init();LCD_ShowNum(1,1,var211,5);while(1){;} }实验1-编写LCD1602液晶显示屏驱动函…...

算法题(24):只出现一次的数字(二)

审题&#xff1a; 数组中除了答案元素只出现一次外&#xff0c;其他元素都会出现三次&#xff0c;我们需要找到并返回答案元素 思路&#xff1a; 由于现在会出现三次&#xff0c;所以利用异或运算符的方法就会失效。而所有数据都在32位二进制范围内&#xff0c;所以我们采用依次…...

趣味编程:心形曲线

目录 1.序言 2.代码展示 3.代码详解 3.1 头文件包含 3.2 绘制坐标轴函数 3.3 main 函数主体部分 4. 小结 1.序言 2025年的第一篇博客就用这个笛卡尔心形图开篇吧&#xff0c;寓意着新年大家能够有心有所属&#xff0c;祝诸位程序猿 / 程序媛 能够早点遇到自己的另一半。…...

C# 设计模式(结构型模式):享元模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;享元模式 (Flyweight Pattern) 在软件开发中&#xff0c;尤其是在处理大量对象时&#xff0c;我们常常会面临内存和性能上的挑战。当多个对象具有相似的状态时&#xff0c;通常会占用大量的内存资源&#xff0c;从而…...

计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...