首页 > 系统相关 >Windows 通过私钥远程连接 Linux 服务器【含密钥对制作】

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

时间:2024-10-21 11:48:37浏览次数:3  
标签:私钥 Windows SSH Linux 服务器 your ssh

在现代软件开发和系统管理中,远程连接 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 服务器的操作,并有效提升远程开发效率。

标签:私钥,Windows,SSH,Linux,服务器,your,ssh
From: https://blog.csdn.net/qq_22841387/article/details/143107733

相关文章

  • 关闭Windows 11自动更新的方法‌12
    importsubprocessdefdisable_windows_update_task():#PowerShellcommandtodisablethe"ScheduledStart"taskpowershell_command=('Get-ScheduledTask-TaskName"ScheduledStart"-TaskPath"\\Microsoft......
  • Windows文件被某个进程占用,无法删除
    EXE文件打开PowerShell,按如下步骤操作:#查找进程tasklist|findstr"something.exe"#这行命令会得到如下回显,第二个字段就是进程号something.exe27024Console152,940K#按照进程号将这个进程杀掉taskkill/PID27024/F#按照进程名......
  • Linux系统MySQL安装
    1.下载安装包官方网站:https://www.mysql.com/,找到下载DOWNLOADS,下载操作系统对应的社区版本。本文使用的数据库版本是5.7.41。在社区版本下载界面可以下载最新和以前的版本。2、安装MySQL2.1、查看是否已经安装MySQLrpm-qa|grepmysqlmysql-libs-5.1.73-7.el6.x86_64......
  • Linux模块
    ansible-doc-l:查看ansible系统的模块ansible-doc加模块名:具体查看那个模块ansible-doc-s加模块名:具体查看那个模块ansible重要常用模块命令模块:commandshellscript文件模块:filecopy安装模块:yum服务模块:service定时模块:cron挂载模块:mo......
  • Linux安装配置NFS实现目录挂载
    什么是NFSNFS(NetworkFileSystem)即网络文件系统,它允许网络中的计算机之间通过网络共享资源。将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,在客户端端看起来,就像访问本地文件一样。RPC,基于C/S模型。程序可以使用这个协......
  • Linux期末考试选择题题库
    在创建Linux分区时,一定要创建(D )两个分区A. FAT/NTFS  B. FAT/SWAP  C. NTFS/SWAP  D.SWAP/根分区在Red Hat Linux 9中,系统默认的(A)用户对整个系统拥有完全的控制权。A. root  B. guest  C. administrator  D.supervistor.当登录Linux时,一个具有唯一......
  • linux系统有什么优缺点
    Linux系统的优缺点包括:1、高度可定制;2、安全性高;3、硬件兼容性强;4、学习曲线陡峭;5、软件生态相对较弱。Linux系统以其开源和自由的特点吸引了大量的开发者和企业用户。它提供了强大的安全性和硬件兼容性,但同时,新手可能会觉得学习曲线陡峭。此外,与Windows和macOS相比,它的软件生态......
  • Linux内核文件系统-虚拟文件系统-文件操作
    建议点击这里查看个人主页上的最新原文作者:陈孝松主页:chenxiaosong.com哔哩哔哩:陈孝松课程:chenxiaosong.com/courses博客:chenxiaosong.com/blog贡献:chenxiaosong.com/contributions邮箱:[email protected]交流群:544216206,点击查看群介绍点......
  • Linux | CentOS7安装Java17的详细步骤
    步骤1:更新系统在安装Java之前,确保系统包是最新的。sudoyumupdate-y步骤2:下载Java17从Oracle官方网站或AdoptOpenJDK下载Java17。如果使用OracleJDK,可以到Oracle网站下载。如果使用AdoptOpenJDK,可以使用以下命令:wgethttps://github.com/adoptium/temurin17-bina......
  • Windows打开telnet功能
     同时按 Win+R  在输入框中输入cmd,点击确定按钮,点回车即可进入dos界面,输入telnet !!!  明显上面提示文字,不是内部或外部命令,也不是可运行的程序 !!!  1.鼠标移动到桌面栏底部右击鼠标--->2.任务栏设置--->3.主页--->4.搜索控制面板 --->5.网络和Internet -......