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

即可连接。


相关推荐
舰长11531 分钟前
linux 实现文件共享的实现方式比较
linux·服务器·网络
路由侠内网穿透.1 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
树℡独1 小时前
ns-3仿真之应用层(三)
运维·服务器·ns3
VekiSon1 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
skywalk81632 小时前
尝试在openi启智社区的dcu环境安装ollama最新版0.15.2(失败)
linux·运维·服务器·ollama
看我干嘛!2 小时前
第三次python作业
服务器·数据库·python
Andy Dennis3 小时前
FTP局域网功能小网站V2_2
服务器·flask·html5
我材不敲代码3 小时前
在Linux系统上安装MySQL
linux·运维·服务器
珠海西格3 小时前
远动通信装置为何是电网安全运行的“神经中枢”?
大数据·服务器·网络·数据库·分布式·安全·区块链
小宇的天下3 小时前
Calibre 3Dstack --每日一个命令day18【floating_trace】(3-18)
服务器·前端·数据库