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

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

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


✅ 一、基本原理

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

  • 公钥(id_rsa.pubid_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

即可连接。


相关推荐
码上上班6 小时前
tengine知识点
linux·服务器·centos
雾时之林9 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库
sxstj12 小时前
Ubuntu 完整安装并启用 Flatpak 教程
linux·运维·ubuntu
Sylvia33.12 小时前
从轮询到推送:足球数据API架构演进与火星数据技术拆解
java·服务器·网络·python·websocket·架构
RisunJan12 小时前
Linux命令-sshd(SSH 服务器守护进程)
linux·服务器·ssh
天疆说12 小时前
Ubuntu 26.04 下 Intel Meteor Lake 核显 + NPU 驱动配置与 PyTorch NPU 推理实测
linux·pytorch·ubuntu
meilindehuzi_a13 小时前
TypeScript面试题:interface 与 type:相同点、核心区别与选择指南
java·ubuntu·typescript
铁锚14 小时前
解决Ubuntu执行sudo时 unable to resolve host 报错问题
linux·数据库·ubuntu
程序员老陆15 小时前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
玫幽倩15 小时前
2026黄河流域公安院校-电子物证单项赛(程序逆向分析+服务器取证)
运维·服务器·python·电子取证·逆向·程序分析·服务器取证