SSH Config 配置指南

假如有多台服务器,hostname都很长,比如我有 9 台服务器,信息如下:

  • HostName: 01.research.cs.dal.ca ~ 09
  • User: fuckyoubitch
  • Port: 22

需要登录时需输入:

ssh fuckyoubitch@01.research.cs.dal.ca
# 然后还要手动输入密码...

编辑或新建配置文件:

vim ~/.ssh/config

Config文件作用说明

# ==========================================
# 全局默认设置 (针对所有主机生效)
# ==========================================
Host *
    # 每 60 秒发送一个心跳包,防止长时间无操作被断开 (Broken pipe)
    ServerAliveInterval 60
    # 允许的最大心跳丢失次数
    ServerAliveCountMax 3
    # 默认开启压缩,网速慢时有用
    Compression yes

# ==========================================
# 场景 1: 最基础的服务器 (别名登录)
# ==========================================
# 以后只需输入: ssh lab
Host lab
    HostName 192.168.1.100       # 服务器真实 IP 或 域名
    User your_username           # 登录用户名

# ==========================================
# 场景 2: 指定私钥文件 & 非标准端口
# ==========================================
# 以后只需输入: ssh aws
Host aws
    HostName ec2-54-123-45-67.compute-1.amazonaws.com
    User ubuntu
    Port 2222                    # 假设 SSH 端口改为了 2222
    IdentityFile ~/.ssh/aws.pem  # 指定该服务器专用的私钥路径

# ==========================================
# 场景 3: 跳板机 (ProxyJump) - 科研党必备
# ==========================================
# 假设你必须先登录 gateway,才能访问内部的 GPU 服务器
# 1. 定义跳板机 (Gateway)
Host gateway
    HostName gateway.university.edu
    User student_id

# 2. 定义内网机器 (通过跳板机跳转)
# 以后只需输入: ssh gpu-server,系统会自动先连 gateway 再连内网
Host gpu-server
    HostName 10.0.0.5            # 内网 IP
    User root
    ProxyJump gateway            # 关键指令:指定通过 gateway 跳转

# ==========================================
# 场景 4: GitHub 多账号 (如果有需要)
# ==========================================
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_personal

Host gitlab-lab
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/id_rsa_lab_work

样例:

  Host server1
      HostName gpu01.research.cs.dal.ca

  Host server2
      HostName gpu02.research.cs.dal.ca

  Host server3
      HostName gpu03.research.cs.dal.ca

Host server?
    User mudgoopee
    Port 22
    # 每60秒发送心跳包,防止长时间跑代码时断连
    ServerAliveInterval 60
    ServerAliveCountMax 3

第一步:生成密钥对(如果还没有的话)

在本地终端执行:

ssh-keygen -t rsa -b 4096
# 一路回车即可

第二步:一键分发公钥

手动对 多 台服务器执行 ssh-copy-id 太慢了。我们可以用一段简单的 Shell 脚本循环处理。在终端直接粘贴运行:

for i in {1..9}; do
    echo "正在配置 server$i ..."
    # 这步会提示输入密码,统一输入 1234 即可
    ssh-copy-id server$i
done

配置完成后,现在登录服务器只需要:

ssh server1