当前位置: 首页 > 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 无密码登录。


http://www.lryc.cn/news/514714.html

相关文章:

  • 小白0基础centos8安装docker
  • 机器学习之逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告
  • openGauss连接是报org.opengauss.util.PSQLException: 尝试连线已失败
  • 详细的一条SQL语句的执行流程
  • 适用于小白的程序报错提问 AI 模板
  • web实操9——session
  • OFDM学习-(二)长短序列和PPDU整体数据处理流程
  • .NET周刊【12月第4期 2024-12-22】
  • Conda 安装 Jupyter Notebook
  • 鸿蒙开发:实现键值数据库存储
  • WebGL 实践(一)开发环境搭建
  • 在线机考|2024华为实习秋招春招编程题(最新)——第3题_PCB印刷电路板布线_300分(八)
  • Spring源码分析之事件机制——观察者模式(三)
  • C#实现画图,及实现图像运动,C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)C#之快速入门GDI+绘图 C#实现快速画图功能
  • 【51单片机零基础-chapter6:LCD1602调试工具】
  • 算法题(24):只出现一次的数字(二)
  • 趣味编程:心形曲线
  • C# 设计模式(结构型模式):享元模式
  • 计算机毕业设计Django+Tensorflow音乐推荐系统 音乐可视化 卷积神经网络CNN LSTM音乐情感分析 机器学习 深度学习 Flask
  • mysql 死锁案例及简略分析
  • 第四届计算机、人工智能与控制工程
  • RIP配置实验
  • C# 整型、浮点型 数值范围原理分析
  • Adobe Acrobat Pro DC 2023 下载安装教程,附详细图文
  • stable diffusion秋叶启动器安装roop插件
  • 7-14 统计工龄
  • OLED的显示
  • 本地测试文件解析
  • Elasticsearch JavaRestClient版
  • ubuntu 使用s3fs配置自动挂载对象存储