用你本地已有的私钥(private key)去 SSH 登录远程 Ubuntu 服务器

用你本地已有的私钥(private key)去 SSH 登录远程 Ubuntu 服务器,而不是输入密码。

正确做法是:把对应的公钥(public key)放到服务器上,而不是直接传私钥。


✅ 一、基本原理

  • 私钥(id_rsa 或 id_ed25519)始终保存在 本地电脑,绝不能上传到服务器。

  • 公钥(id_rsa.pub 或 id_ed25519.pub)复制到服务器的:

    复制代码
    ~/.ssh/authorized_keys

    文件中。

    服务器就能用公钥来验证你的登录请求。


⚙️ 二、具体操作步骤

假设:

  • 远程服务器 IP 是 192.168.1.100
  • 用户名是 ubuntu
  • 你本地已经生成过密钥对(比如在 Windows、Mac 或 WSL 里)

① 检查你本地是否已有 SSH 密钥

bash 复制代码
ls ~/.ssh/

若看到如下文件:

复制代码
id_rsa        id_rsa.pub

或

复制代码
id_ed25519    id_ed25519.pub

说明你已有密钥。

如果没有,执行:

bash 复制代码
ssh-keygen -t ed25519 -C "your_email@example.com"

一路回车即可。


② 将本地公钥上传到服务器(推荐命令)

方法 1:自动上传

bash 复制代码
ssh-copy-id ubuntu@192.168.1.100

第一次运行会让你输入服务器密码。

命令执行后,它会自动把你本地的 ~/.ssh/id_*.pub 内容追加到服务器的 ~/.ssh/authorized_keys 文件。


方法 2:手动复制

如果你不能用 ssh-copy-id:

  1. 查看你本地公钥:

    bash 复制代码
    cat ~/.ssh/id_ed25519.pub
  2. 复制整行内容(不要有换行)。

  3. 登录服务器:

    bash 复制代码
    ssh ubuntu@192.168.1.100
  4. 在服务器上执行:

    bash 复制代码
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "你的公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys

③ 验证免密登录

在本地执行:

bash 复制代码
ssh ubuntu@192.168.1.100

如果能直接登录而不再提示输入密码,说明设置成功 ✅。


🧩 三、可选优化

如果你使用多个密钥,可以在 ~/.ssh/config 中指定:

bash 复制代码
Host myserver
    HostName 192.168.1.100
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519

然后你只需:

bash 复制代码
ssh myserver

即可连接。


相关推荐
瑞克-桑切斯1 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
vibecode3 小时前
网站服务器失去响应怎么解决?我把连接超时和读超时这两段计时拆开跑了一遍
运维·服务器
迪康Defender5 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
沫璃染墨5 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
衍玊8 小时前
深入剖析 TCP/IP 网络通信原理与内核实现
服务器·网络·tcp/ip
十碗饭吃不饱8 小时前
SSH 密钥认证详解:原理、实操、参数、排错与加固
运维·ssh
echoarts8 小时前
服务器连不上?FileZilla 改被动模式就好了
运维·服务器·其他
QXWZ_IA9 小时前
变电站数字孪生巡检的能力分层、数据接入与空间计算边界
运维·服务器·空间计算
longzhizhui9269 小时前
Ubuntu 全版本 CVE-2026-98432 内核安全升级操作手册
ubuntu·网络安全·云计算·bash
小天源10 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库