当前位置: 首页 > 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领…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...