用你本地已有的私钥(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

即可连接。


相关推荐
曦夜日长8 分钟前
Git系统篇,Git远程仓库(三):本地仓库与远程仓库的交互
linux·服务器·网络·git·交互
Peter-Code24 分钟前
Nginx 常用操作整理(前端)
服务器·前端·nginx
mengchanmian10 小时前
VSFTP 服务器搭建(Centos)
运维·服务器·centos
别动我齐刘海11 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
不像程序员的程序媛12 小时前
linux常见文本操作命令
linux·运维·服务器
蜗牛互联网14 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python
小HANN15 小时前
华为云企业网站上云实战|从零搭建高可用WordPress全站架构(ECS+RDS+ELB+弹性伸缩+云监控闭环)
linux·运维·服务器·经验分享
祖力5516 小时前
驱动工程搭建与字符设备驱动框架
linux·运维·服务器·内核·arm·imx6ull·驱动
发量惊人的中年网工16 小时前
SD-WAN 组网方案怎么选?跨地域与多分支企业的选型指南(含成本对比)
服务器·网络·数据库
斯晨的AI笔记16 小时前
在服务器上跑 npm ci 四十分钟没装完,我打包把 node_modules 扔了过去
服务器·node.js