从零到一:Windows 配置 SSH 免密登录 Linux 的终极指南

902 阅读5分钟

大家好!今天我们要聊一个非常实用的话题——如何在 Windows 上配置 SSH 免密登录 Linux 服务器。如果你是一个开发者,或者经常需要远程管理 Linux 服务器,那么这篇文章绝对适合你。我们会从零开始,一步步实现这个功能,顺便还会讲几个笑话,让你在学习的路上不孤单!😄


为什么要配置 SSH 免密登录?

想象一下,你正在开发一个项目,突然需要登录到远程服务器查看日志。你输入了用户名和密码,结果发现密码输错了!再试一次,还是错了!第三次,终于成功了,但你已经被气得想砸键盘了!😤

这时候,SSH 免密登录就派上用场了。通过配置 SSH 密钥对,你可以直接登录服务器,无需输入密码,既方便又安全。接下来,我们就来学习如何实现这个功能。


1. 生成 SSH 密钥对

首先,我们需要在 Windows 上生成 SSH 密钥对(公钥和私钥)。

方法 1:使用 Git Bash(推荐)

如果你安装了 Git for Windows,可以使用 Git Bash 来生成密钥对。

  1. 打开 Git Bash。

  2. 运行以下命令生成密钥对:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
    • -t rsa:指定密钥类型为 RSA。
    • -b 4096:指定密钥长度为 4096 位(更安全)。
    • -C "your_email@example.com":添加注释(可选)。
  3. 按提示选择保存路径(默认路径为 ~/.ssh/id_rsa)。

  4. 设置密钥的密码(可选,如果不想设置密码,直接按回车跳过)。

生成完成后,你会在 ~/.ssh/ 目录下看到两个文件:

  • id_rsa:私钥文件(不要泄露)。
  • id_rsa.pub:公钥文件。

方法 2:使用 Windows PowerShell

如果你没有 Git Bash,可以使用 Windows PowerShell 生成密钥对。

  1. 打开 PowerShell。

  2. 运行以下命令生成密钥对:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    
  3. 按提示选择保存路径(默认路径为 C:\Users<你的用户名>.ssh\id_rsa)。

  4. 设置密钥的密码(可选)。

生成完成后,你会在 C:\Users<你的用户名>.ssh 目录下看到两个文件:

  • id_rsa:私钥文件。
  • id_rsa.pub:公钥文件。

2. 将公钥上传到 Linux 服务器

接下来,将生成的公钥(id_rsa.pub)上传到 Linux 服务器的 ~/.ssh/authorized_keys 文件中。

方法 1:使用 ssh-copy-id 命令

如果你有 Git Bash 或 WSL(Windows Subsystem for Linux),可以使用 ssh-copy-id 命令自动上传公钥。

  1. 打开 Git Bash 或 WSL。

  2. 运行以下命令:

    ssh-copy-id -i ~/.ssh/id_rsa.pub username@your_server_ip
    
    • username:Linux 服务器的用户名。
    • your_server_ip:Linux 服务器的 IP 地址。
  3. 输入 Linux 服务器的密码,完成公钥上传。

方法 2:手动上传公钥

如果没有 ssh-copy-id,可以手动上传公钥。

  1. 打开 PowerShell 或 Git Bash。

  2. 使用 scp 命令将公钥上传到服务器:

    scp ~/.ssh/id_rsa.pub username@your_server_ip:/tmp/id_rsa.pub
    
  3. 登录到 Linux 服务器:

    ssh username@your_server_ip
    
  4. 将公钥添加到 ~/.ssh/authorized_keys 文件中:

    mkdir -p ~/.ssh
    cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    rm /tmp/id_rsa.pub
    

3. 配置 SSH 客户端

在 Windows 上配置 SSH 客户端,使用私钥连接到 Linux 服务器。

方法 1:使用 Git Bash 或 WSL

  1. 打开 Git Bash 或 WSL。

  2. 运行以下命令连接到服务器:

    ssh -i ~/.ssh/id_rsa username@your_server_ip
    
    • -i ~/.ssh/id_rsa:指定私钥文件。
    • username:Linux 服务器的用户名。
    • your_server_ip:Linux 服务器的 IP 地址。

方法 2:使用 Windows PowerShell

  1. 打开 PowerShell。

  2. 运行以下命令连接到服务器:

    ssh -i C:\Users<你的用户名>.ssh\id_rsa username@your_server_ip
    

4. 配置 SSH 配置文件(可选)

为了简化连接命令,可以配置 SSH 配置文件。

  1. ~/.ssh/ 目录下创建或编辑 config 文件:

    notepad ~/.ssh/config
    
  2. 添加以下内容:

    Host myserver
        HostName your_server_ip
        User username
        IdentityFile ~/.ssh/id_rsa
    
    • Host myserver:自定义服务器别名。
    • HostName:服务器的 IP 地址或域名。
    • User:登录用户名。
    • IdentityFile:私钥文件路径。
  3. 保存文件后,可以直接使用别名连接服务器:

    ssh myserver
    

5. 测试免密登录

完成以上步骤后,测试是否可以通过私钥免密登录 Linux 服务器。

  1. 打开 Git Bash 或 PowerShell。

  2. 运行以下命令:

    ssh username@your_server_ip
    

    或使用别名:

    ssh myserver
    

如果配置正确,你应该可以直接登录,无需输入密码。


6. 笑话时间

在学习的过程中,别忘了放松一下!以下是几个和 SSH 相关的笑话:

  1. SSH 的终极目标

    • SSH 的终极目标是什么?让用户忘记密码的存在!😅
  2. SSH 的日常

    • 程序员的生活就是:写代码 -> 发现 Bug -> 修 Bug -> 写代码 -> 发现 Bug -> 修 Bug -> 无限循环。🔄
  3. SSH 的梦想

    • SSH 的梦想是什么?让用户一键登录,自己去度假!🏖️

7. 总结

通过以上步骤,你可以在 Windows 上配置 SSH 密钥对,并实现免密登录 Linux 服务器。这种方式不仅方便,还更安全(避免了密码泄露的风险)。

如果你有任何问题,或者想获取完整代码,欢迎在后台私信我!我们下次再见! 😄


问题留给你

  • 你平时用 SSH 登录服务器做什么?
  • 你有没有遇到过因为 SSH 配置问题引发的“灾难”?
  • 如果你有一个万能 SSH 命令,你最想实现什么功能?

欢迎在评论区分享你的故事!🎉