SSH Config 配置指南
Contents
原因
假如有多台服务器,hostname都很长,比如我有 9 台服务器,信息如下:
- HostName:
01.research.cs.dal.ca~09 - User:
fuckyoubitch - Port:
22
需要登录时需输入:
ssh fuckyoubitch@01.research.cs.dal.ca
# 然后还要手动输入密码...
解决方案:SSH Config 配置
Config文件
编辑或新建配置文件:
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
文若可采,幸赐清茗一盏,以助笔耕不辍