Windows 通过私钥远程连接 Linux 服务器【含密钥对制作】

在现代软件开发和系统管理中,远程连接 Linux 服务器是非常常见的任务。尤其在 Windows 系统下,使用 SSH 工具连接 Linux 服务器是开发者们不可或缺的技能之一。为了保证安全性,SSH 密钥对(公钥和私钥)的使用可以避免传统用户名密码方式的安全风险,提供了更高的安全保障。

本文将详细介绍如何在 Linux 服务器上生成 SSH 密钥对、如何将私钥安全传输到 Windows 客户端,并且如何通过 Windows 系统的 SSH 客户端或者 Visual Studio Code 实现远程登录和管理 Linux 服务器。无论你是开发者还是系统管理员,都可以参考本教程搭建高效、安全的远程开发环境。


什么是 SSH 密钥对?

SSH(Secure Shell)是一种加密协议,常用于远程服务器管理和文件传输。相比用户名和密码的身份认证方式,SSH 密钥对使用非对称加密技术,提供了更高的安全性。一个 SSH 密钥对包含以下两部分:

  • 公钥(Public Key):存储在服务器上,作为服务器验证客户端身份的凭据。
  • 私钥(Private Key):存储在客户端(如你的 Windows 电脑)上,用户应妥善保管,不能泄露。

工作原理:每次用户发起连接请求时,服务器会使用公钥进行加密,而客户端使用私钥解密后完成认证。由于私钥只在客户端保管,外界无法通过公钥逆推出私钥,极大地提高了安全性。


连接概览步骤

  1. 在 Linux 服务器上生成 SSH 密钥对
  2. 将生成的私钥传输到 Windows 客户端
  3. 通过 Windows 系统的 SSH 客户端(如命令行或 VS Code)使用私钥连接 Linux 服务器

详细操作步骤

1. 在 Linux 服务器上生成 SSH 密钥对

在 Linux 服务器上生成 SSH 密钥对的过程非常简单,使用 ssh-keygen 命令即可生成一对 RSA 密钥。具体步骤如下:

执行命令:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_custom

命令的各个参数解释如下:

  • -t rsa:指定密钥类型为 RSA(最常用的加密算法之一)。
  • -b 4096:生成 4096 位长的密钥(更长的密钥通常更加安全)。
  • -f ~/.ssh/id_rsa_custom:指定密钥的存储路径及文件名,id_rsa_custom 为私钥,id_rsa_custom.pub 为公钥。

执行命令后,系统会提示是否为密钥设置密码短语(passphrase)。该密码是额外的安全层,但在自动化环境下,通常不会设置。如果你希望提高安全性,可以为私钥设置密码短语。

确认生成的密钥文件:
  • ~/.ssh/id_rsa_custom:私钥文件(不能外泄)。
  • ~/.ssh/id_rsa_custom.pub:公钥文件(需要添加到服务器的授权文件中)。

将公钥内容添加到服务器的 ~/.ssh/authorized_keys 文件中以启用密钥认证:

cat ~/.ssh/id_rsa_custom.pub >> ~/.ssh/authorized_keys

这样,服务器将信任使用该私钥进行连接的客户端。

安全提示:确保 ~/.ssh/authorized_keys 文件的权限设置正确,建议仅所有者有读写权限:

chmod 600 ~/.ssh/authorized_keys

2. 将私钥传输到 Windows 客户端

生成密钥后,下一步是将私钥安全地传输到 Windows 客户端。传输私钥有多种方式,最常用的是使用 scp 或 SFTP 工具。

2.1 使用 scp 命令传输私钥

如果 Windows 和 Linux 服务器处于同一网络环境或有互通的端口,可以使用 scp 命令从 Linux 服务器将私钥传输到 Windows:

scp ~/.ssh/id_rsa_custom your_windows_user@your_windows_ip:C:\Users\your_windows_user\.ssh\
  • ~/.ssh/id_rsa_custom:指定要传输的私钥文件。
  • your_windows_user@your_windows_ip:C:\Users\your_windows_user\.ssh\:目标 Windows 机器的 SSH 文件目录。

注意:在传输过程中要确保网络安全,避免私钥泄露。如果不能通过 SCP 传输,你也可以使用 SFTP 工具(如 WinSCP)手动下载私钥文件。

2.2 手动下载私钥文件

若无法直接使用 scp 命令(如 Windows 和服务器不在同一网络),你可以通过 SFTP 客户端(如 FileZilla 或 WinSCP)手动将私钥文件下载到 Windows 机器中。

  • 下载完成后,将私钥放置在 C:\Users\your_windows_user\.ssh\ 目录下。

3. 使用 Windows SSH 客户端连接 Linux 服务器

一旦私钥传输到 Windows,接下来可以使用 Windows 自带的 OpenSSH 客户端或第三方工具(如 PuTTY 或 VS Code)连接服务器。

3.1 使用 Windows 命令行工具 (CMD 或 PowerShell) 连接

Windows 10 及以上系统自带了 OpenSSH 客户端,无需额外安装工具,可以直接使用命令行(CMD 或 PowerShell)通过私钥连接到 Linux 服务器。

执行如下命令:

ssh -i C:\Users\your_windows_user\.ssh\id_rsa_custom your_linux_user@your_server_ip
  • -i C:\Users\your_windows_user\.ssh\id_rsa_custom:指定私钥文件路径。
  • your_linux_user@your_server_ip:目标服务器的用户名和 IP 地址。
    在这里插入图片描述
    成功执行命令后,你将通过 SSH 私钥认证连接到远程 Linux 服务器。

注意:如果私钥设置了密码短语,连接时将提示输入该密码短语。

3.2 使用 VS Code 连接远程服务器

VS Code 是流行的代码编辑器,Microsoft 提供了强大的 Remote - SSH 插件,支持通过 SSH 远程开发。以下是详细步骤:

安装 Remote - SSH 插件:
  1. 打开 VS Code,点击左侧的扩展图标,搜索 Remote - SSH 并点击安装。

  2. 安装完成后,在 VS Code 下方的蓝色状态栏中会出现一个远程连接图标。

配置 SSH 连接:
  1. 按下 Ctrl + Shift + P 调出命令面板,输入 Remote-SSH: Add New SSH Host

  2. 在弹出的输入框中输入以下连接命令【请根据实际情况修改对应的用户名和IP】:

    ssh -i C:\Users\your_windows_user\.ssh\id_rsa_custom your_linux_user@your_server_ip
    
  3. 系统会提示选择 SSH 配置文件路径,选择 C:\Users\your_windows_user\.ssh\config

编辑 SSH 配置文件:

你还可以手动编辑 config 文件,以保存服务器配置,方便以后快速连接。config 文件的格式如下:

Host my-linux-server
    HostName your_server_ip
    User your_linux_user
    IdentityFile "C:\Users\Leo\.ssh\id_rsa_custom"

在这里插入图片描述
配置完成后,只需执行 Remote-SSH: Connect to Host 命令,选择 my-linux-server,VS Code 将自动连接到服务器并启动远程开发环境。

开始远程开发:

连接成功后,你可以在 VS Code 的文件资源管理器中直接查看和编辑远程服务器上的文件,甚至可以运行和调试服务器上的程序。VS Code 提供了丰富的调试功能支持,极大地提高了开发效率。


总结

通过 SSH 私钥远程连接 Linux 服务器是一种安全、高效的操作方式,本文详细介绍了如何生成 SSH 密钥对、传输私钥以及通过 Windows 系统的 SSH 客户端或 VS Code 连接 Linux 服务器。SSH 私钥的使用不仅简化了登录流程,还提高了安全性。

在使用 SSH 私钥时,请务必妥善保管私钥,避免泄露。通过 VS Code 的 Remote - SSH 插件,还可以极大简化远程开发的配置流程,并在统一的开发环境下工作。

希望通过本指南,你能顺利实现从 Windows 连接到 Linux 服务器的操作,并有效提升远程开发效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/896035.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32CUBEIDE FreeRTOS操作教程(七):queue队列

STM32CUBEIDE FreeRTOS操作教程(七):queue队列 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板为例&#xff…

家用wifi的ip地址固定吗?换wifi就是换ip地址吗

在探讨家用WiFi的IP地址是否固定,以及换WiFi是否就意味着换IP地址这两个问题时,我们首先需要明确几个关键概念:IP地址、家用WiFi网络、以及它们之间的相互作用。 一、家用WiFi的IP地址固定性 家用WiFi环境中的IP地址通常涉及两类&#xff1a…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十四集:制作新的场景以及制作创建切换管理系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作新的场景 1.重新翻新各种Sprite2.制作地图前期应该做的事情3.疯狂的制作地图二、制作场景切换管理系统 1.制作场景切换点TransitionPoint2.切换场景时的…

【Linux内核】eBPF基础篇

系列综述: 💞目的:本系列是个人整理为了学习ebpf机制的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于–知乎ebpf专栏文章–进行的,每个知识点的修正和深…

【JavaEE初阶】深入理解TCP协议中的封装分用以及UDP和TCP在网络编程的区别

前言 🌟🌟本期讲解关于TCP/UDP协议的原理理解~~~ 🌈上期博客在这里:【JavaEE初阶】入门视角-网络原理的基础理论的了解-CSDN博客 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 …

前端算法:时间复杂度和空间复杂度

一、算法的重要性 1.为什么前端开发需要学习算法? 学习算法可以帮助培养逻辑思维能力,在面对复杂的问题时,能够系统性地分析问题、分解步骤并成功找到的正确的解决方案。 掌握基本的排序、查找算法和时间复杂度分析可以帮助编写更高效的代码…

移动网络知识

一、3G网络 TD-SCDMA(时分同步码分多址接入)、WCDMA(宽带码分多址)和CDMA2000三种不同的3G移动通信标准 TD-SCDMA(时分同步码分多址接入):中国自主开发的一种3G标准主要用于国内市场&#xff…

零跑“半价平替”杀疯了,没钱别硬上问界理想

文 | AUTO芯球 作者 | 雷慢 你绝对想不到, 现在造车新势力的周销量榜第二名已经是零跑了 来看啊,十月第2周, 零跑周销量8700量,已经超过问界的7100辆, 放以前,问界也是周销量9000台左右的主&#xff0…

RHCE——时间服务器

NTP——网络时间协议,通过udp123端口进行网络时钟同步 chronyd chronyd——一个开源自由的网络时间协议 NTP 的客户端和服务器软件。能让计算机保持系统时钟与时钟服务器(NTP)同步,从而使计算机保持精确的时间。 Chrony由两个程…

大数据查询引擎之Tez

Apache Tez 是一个用于大数据处理的分布式计算框架,旨在提高 Hadoop 的 MapReduce 计算引擎的效率和性能。它是一个面向 DAG(有向无环图)任务执行的框架,主要用于大规模数据处理场景中,特别是在 Apache Hadoop 生态系统…

开放式耳机好不好用?盘点开放式蓝牙耳机排行榜前五名

​开放式耳机是好用的,目前非常流行,它们以时尚、美观和舒适著称,迅速赢得了众多用户的喜爱,成为了耳机市场的新宠。与传统的入耳式耳机相比,开放式耳机佩戴更稳固,对耳朵也更为温和。尽管有些人认为它们价…

C++在vscode中的code runner配置/环境配置

C在vscode中快捷运行(code runner) 一、配置tasks.json 在vscode中创建文件夹或打开文件夹,会发现文件夹下多了一个.vscode文件夹,在该文件夹下创建tasks.json文件,并添加一下内容 {"version": "2.0…

单周期处理器设计思路

目录 单周期处理器设计思路加法器的优化行波进位加法器(RCA)先行进位加法器(CLA)两种加法器的对比CLA的再优化可以用加法器实现的其他操作 编写可维护的RTL代码 单周期处理器设计思路 加法器的优化 (用综合器综合*/等…

如何修改MAC地址破解网络无线网络限制-担心别人蹭网,路由器设置MAC地址过滤,限定了能访问无线网络的网卡地址-供大家学习参考

路由器都设置了MAC地址过滤,也就是限定了能访问无线网络的网卡的MAC地址。因为无线路由器不一定由自己控制,所以当更换了笔记本或者更换了无线网卡的时候,也许就上不了网了。我们可以修改网卡的MAC地址实现上网。 下载:https://do…

R01 vue+springboot 高考志愿推荐AI问答大数据平台

可以查看本文系统对应的视频讲解: vuespringboot 高考推荐AI问答志愿推荐大数据 R01 带增删改查、大屏、支持爬虫 1 系统背景 近年来,高考作为中国教育体系中最重要的考试之一,承载了无数考生和家庭的梦想。随着信息技术的迅猛发展&#xff…

Linux shell脚本文件通过shc工具加密,生成静态链接可执行文件

要使用 shc 工具对 Linux shell 脚本进行加密并生成静态链接的可执行文件,你可以按照以下步骤操作: 安装 shc 工具: 如果你的系统中还没有安装 shc,可以通过包管理器安装,例如在 Ubuntu 系统中,可以使用以下…

YOLOv11模型改进-模块-引入空间池化模块StripPooling 解决遮挡、小目标

本篇文章将介绍一个新的改进机制——空间池化模块StripPooling,并阐述如何将其应用于YOLOv11中,显著提升模型性能。首先,我们将解析StripPooling的工作原理,SP模块通过条带池化在水平和垂直方向上捕捉长距离依赖关系,增…

如何在线查看近8年的建筑覆盖变化

我们在《谷歌发布建筑数据,高度误差达惊人的1.5米》一文中介绍了谷歌2.5D建筑数据用途、制作方法以及数据下载方式。 现在我们演示下如何在线查看近8年的建筑物覆盖、建筑物质心和建筑物高度的变化。 历史建筑覆盖在线查看 2.5D建筑演变数据集包含2016年至2023年…

碰一碰支付怎么推广的?小白也能看懂的教程来了!

作为支付宝和微信全面力推的一个项目,碰一碰支付的热度可谓是节节攀升,连带着与之相关的话题,如碰一碰支付是什么和碰一碰支付怎么推广的等也因此成为了人们关注的焦点。那么,本期,我们就来详细地解答一下这两个问题。…

2024台州赛CTFwp

备注: 解题过程中,关键步骤不可省略,不可含糊其辞、一笔带过。解题过程中如是自己编写的脚本,不可省略,不可截图(代码字体可以调小;而如果代码太长,则贴关键代码函数)。…