macOS 自带 Terminal + ~/.ssh/config 使用说明

社区话题 Linux/macOS 与自动化运维 macOS 自带 Terminal + ~/.ssh/config 使用说明

正在查看 1 条回复
  • 作者
    帖子
    • #470

      追光
      管理员

      ?️ macOS 自带 Terminal:配置 SSH 登录的标准方法

      macOS 内置了功能强大的 Terminal(终端),无需额外安装即可使用 SSH 连接远程服务器。通过配置 ~/.ssh/config 文件,你可以:

      • 简化 SSH 命令(用短名代替长串 IP/端口)

      • 管理多个服务器登录信息

      • 实现免密登录(推荐使用 SSH 密钥)


      ? 文件位置

      配置文件路径为:

      ~/.ssh/config

      这个文件由 macOS 自带 Terminal 识别并自动加载。


      ✍ 如何编辑(

      macOS 默认 nano 编辑器

      在 Terminal 中输入:

      nano ~/.ssh/config

      ? macOS 的 nano 快捷键:

      • Ctrl + O → 保存

      • Enter → 确认文件名

      • Ctrl + X → 退出编辑器

      ⚠️ 注意:不是 :wq,那是 Vim 的写法。


      ✅ 示例配置

      Host myserver
        HostName 192.168.1.123      # 服务器地址
        Port 2222                   # 非默认端口需写
        User root                   # 登录用户
        IdentityFile ~/.ssh/id_ed25519  # 密钥路径

      连接命令简化为:

      ssh myserver


      ? 使用 SSH 密钥登录(推荐)

      1. 生成密钥(如果没有)

      ssh-keygen -t ed25519 -C "your@email.com"

      默认会保存在:

      ~/.ssh/id_ed25519(私钥)
      ~/.ssh/id_ed25519.pub(公钥)

      1. 上传公钥到服务器

      ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.168.1.123 -p 2222

      1. 在 config 中配置使用该密钥(参考上方配置)。


      ? 备用方法:让 macOS 记住密码(不推荐)

      如果未使用密钥,macOS 会提示是否将密码保存到钥匙串中(Keychain)。虽然方便,但安全性略逊于密钥认证。


      ? 多服务器配置举例

      Host dev
        HostName dev.example.com
        User root
        Port 2222
        IdentityFile ~/.ssh/dev_rsa
      
      Host staging
        HostName staging.example.com
        User ubuntu
        IdentityFile ~/.ssh/staging_rsa


      ❌ 不推荐:将密码写入配置文件

      虽然技术上可以通过工具如 sshpass 实现自动密码登录,但:

      • macOS 默认无此工具

      • 安全风险极高(明文密码)

      • 不被官方推荐


      ✅ 小结

      特性

      描述

      ? 工具

      macOS 自带 Terminal,无需安装

      ? 推荐认证方式

      使用 SSH 密钥免密登录

      ? 管理文件

      ~/.ssh/config 用于集中管理服务器信息

      ✍ 保存快捷键

      在 nano 中使用 Ctrl + O 保存,Ctrl + X 退出

      ❌ 避免行为

      明文密码、使用 :wq 保存等 Vim 习惯

    • #1187

      追光
      管理员

      同一个服务器的连接,更换服务器的公钥后,重新连接出现错误提示的解决方法

      更换服务器公钥后 SSH 连接报错的解决方法

      问题现象
      连接已知服务器时提示:

      WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
      Host key verification failed.

      原因
      服务器的 SSH Host Key(公钥)已更换(如重装系统、重建实例),但本地 ~/.ssh/knownhosts 仍保留旧密钥,SSH 为防中间人攻击拒绝连接。

      解决步骤

      1. 删除本地旧密钥记录
      若使用非默认端口(如 54302),必须用 [IP]:PORT 格式删除:
      bash

      ssh-keygen -R \"[这里写服务器IP]:端口\"

      示例:
      bash

      ssh-keygen -R \"[43.143.133.170]:ssh端口\"

      2. (可选)修复私钥权限(若提示权限错误):
      bash

      chmod 600 /path/to/privatekey.pem

      3. 重新连接并接受新密钥:
      bash

      ssh yourhostalias

      提示时输入 yes

      ✅ 原理:ssh-keygen -R 精准清除 knownhosts 中对应主机+端口的旧记录,重新连接时自动保存新公钥。

正在查看 1 条回复
  • 在下方一键注册,登录后就可以回复啦。