~/.ssh/config 作用详解

这是一个非常好的问题!我们来深入解释 ~/.ssh/config 的作用,以及你写的这段配置为什么能让 ssh devstack-vm 一键完成复杂连接。


📁 一、~/.ssh/config 是什么?

~/.ssh/configOpenSSH 客户端的用户级配置文件,用于为不同的 SSH 连接定义别名、主机地址、用户名、密钥、代理跳转、端口转发等参数。

✅ 它的作用类似于"SSH 连接的快捷方式 + 自动化脚本"。

当你执行:

sql 复制代码
ssh some-host

SSH 客户端会:

  1. 查看 ~/.ssh/config 中是否有名为 some-hostHost
  2. 如果有,就自动应用其中的所有配置
  3. 如果没有,则按默认行为(直连、当前用户名、无代理等)处理

🔧 二、你的配置逐行解析

css 复制代码
Host devstack-vm
  HostName 192.168.122.30
  User stack
  ProxyJump hanwang@192.168.18.133
  LocalForward 8080 localhost:80
配置项 含义
Host devstack-vm 定义一个别名 (nickname),以后可以用 ssh devstack-vm 代替完整命令
HostName 192.168.122.30 真正要连接的目标 IP(即你的 DevStack 虚拟机)
User stack 登录该 VM 时使用的用户名是 stack
ProxyJump hanwang@192.168.18.133 先通过跳板机 hanwang@192.168.18.133 中转(相当于自动做 SSH 跳转)
LocalForward 8080 localhost:80 在本地(你的电脑)监听 8080 端口,并将流量通过隧道转发到 VM 的 localhost:80

🔄 三、执行 ssh devstack-vm 时发生了什么?

原本你需要手动执行两步:

❌ 手动方式(繁琐):

perl 复制代码
# 第一步:登录跳板机
ssh hanwang@192.168.18.133

# 第二步(在跳板机上):再登录 VM
ssh stack@192.168.122.30

或者用旧式命令(嵌套 SSH):

kotlin 复制代码
ssh -t hanwang@192.168.18.133 ssh stack@192.168.122.30

还要额外开一个终端做端口转发:

ruby 复制代码
ssh -L 8080:localhost:80 -J hanwang@192.168.18.133 stack@192.168.122.30

✅ 使用 config 后:

你只需输入:

复制代码
ssh devstack-vm

SSH 自动帮你完成:

  1. 以用户 hanwang 登录跳板机 192.168.18.133
  2. 从跳板机再以用户 stack 登录 192.168.122.30
  3. 同时在本地开启端口转发:localhost:8080 → VM:80

💡 这就像给复杂的命令起了个"快捷方式",还附带自动化功能!


🌟 四、好处总结

优势 说明
简化命令 ssh devstack-vm 代替一长串参数
避免重复输入 用户名、IP、跳板机等不用每次写
自动端口转发 每次连接自动建立隧道,无需额外命令
支持密钥管理 可指定 IdentityFile 使用特定私钥
提高安全性 减少手动输入错误,避免密码泄露

🛠️ 五、扩展示例

你还可以添加更多功能:

yaml 复制代码
Host devstack-vm
  HostName 192.168.122.30
  User stack
  ProxyJump hanwang@192.168.18.133
  LocalForward 8080 localhost:80
  LocalForward 8774 localhost:8774   # Nova API
  LocalForward 9696 localhost:9696   # Neutron API
  IdentityFile ~/.ssh/id_rsa         # 指定私钥
  IdentitiesOnly yes                 # 只用指定密钥
  ServerAliveInterval 60             # 防止断连

这样一次连接,就能访问多个 OpenStack 服务!


✅ 六、注意事项

  1. 文件权限必须严格

    bash 复制代码
    chmod 600 ~/.ssh/config
    chmod 700 ~/.ssh

    否则 SSH 会忽略该文件(出于安全考虑)。

  2. Host 名称区分大小写,建议全小写。

  3. 缩进不是必须的,但为了可读性建议用空格对齐。


🎯 总结一句话:

~/.ssh/config 让你能用 简单别名 (如 devstack-vm

自动完成 复杂连接逻辑 (跳板机 + 用户名 + 端口转发),

极大提升开发和运维效率!

所以,ssh devstack-vm 能工作,不是魔法,而是你提前写好的"SSH 自动化剧本"在幕后默默执行 😊

如果你经常连接多台服务器,强烈建议善用这个文件!

相关推荐
芜湖xin1 天前
【恒源智享云】pycharm社区版SSH方式使用实例
ssh·云服务器
corpse20101 天前
VirtualBox 安装ubuntu-25 ,配置SSH工具登录
linux·ubuntu·ssh
Zhu7582 天前
【软件更新】在Ubuntu24 LTS中更新openssl到指定版本,例如openssl3.5.6 LTS
linux·ssh·ssl
有理想的打工人2 天前
gitlab群组管理与ssh链接
ssh·gitlab
杨云龙UP3 天前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
小鸡食米3 天前
Linux-SSH
linux·运维·ssh
且_听_风_吟3 天前
SSH 连接 Gerrit老版本 失败问题复盘
运维·ssh
特别关注外国供应商5 天前
SSH PrivX™ OT 案例 - 某船舶运营商为数千艘船舶实现了远程访问,用于诊断、维护和物联网数据采集
物联网·ssh·数据采集·ad·远程访问·多因素身份验证·privx
仙俊红5 天前
关于ssh免密登录
运维·ssh
特别关注外国供应商5 天前
SSH 的 PrivX OT 工业安全远程访问 (ISRA) 被 分析机构 Industrial Cyber 认可
人工智能·网络安全·ssh·特权访问管理·工业安全远程访问·privx·ot 访问安全