一、ssh_config 配置
ssh_config 是 SSH 客户端的配置文件,通常位于用户主目录下的 ~/.ssh/config(用户级别)或系统级别的 /etc/ssh/ssh_config。通过它,你可以预定义连接参数,简化 ssh 命令的使用。
配置语法
- 文件由多个
Host 块组成,每个块定义特定主机的连接规则。
- 每行是一个键值对,格式为
关键字 值。
- 支持通配符(如
*)匹配多个主机。
常用关键字
| 关键字 |
说明 |
示例值 |
Host |
匹配的主机别名或模式 |
server1, *.example.com |
HostName |
实际的主机地址(IP 或域名) |
192.168.1.100 |
User |
登录用户名 |
admin |
Port |
SSH 端口 |
2222 |
IdentityFile |
私钥文件路径 |
~/.ssh/id_rsa |
IdentitiesOnly |
只使用指定的密钥(忽略代理) |
yes |
ProxyJump |
通过跳板机连接 |
jumphost |
ForwardAgent |
启用 SSH 代理转发 |
yes |
示例配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| # 匹配所有主机的基础设置 Host * User defaultuser Port 22 IdentityFile ~/.ssh/id_rsa
# 特定主机 server1 Host server1 HostName 192.168.1.100 User admin Port 2222 IdentityFile ~/.ssh/server1_key
# 使用跳板机连接 internal-server Host internal-server HostName 10.0.0.50 User internaluser ProxyJump jumphost
# 跳板机配置 Host jumphost HostName 203.0.113.10 User jumpuser
|
Host server1: 定义别名 server1,连接时只需 ssh server1。
Host internal-server: 通过 jumphost 跳板连接内网服务器。
Host *: 全局默认配置。
文件权限
确保配置文件权限正确:
二、ssh 命令参数
ssh 命令的基本格式是:
常用选项
| 选项 |
说明 |
示例 |
-i |
指定私钥文件 |
-i ~/.ssh/key.pem |
-p |
指定端口 |
-p 2222 |
-l |
指定登录用户名 |
-l admin |
-X |
启用 X11 转发(图形界面) |
|
-A |
启用代理转发 |
|
-J |
指定跳板机 |
-J jumpuser@jumphost |
-v |
显示详细日志(调试用) |
|
-o |
指定配置选项 |
-o IdentitiesOnly=yes |
三、使用例子
1. 基本登录
2. 指定端口和密钥
1
| ssh -p 2222 -i ~/.ssh/server1_key admin@192.168.1.100
|
3. 通过跳板机连接
1
| ssh -J jumpuser@203.0.113.10 internaluser@10.0.0.50
|
- 通过
203.0.113.10 跳转到内网 10.0.0.50。
4. 执行远程命令
1
| ssh admin@192.168.1.100 "ls -l"
|
5. 使用配置文件简化
假设 ~/.ssh/config 已配置如上:
- 直接使用别名
server1,自动应用配置中的 HostName、User 等。
6. 代理转发
1
| ssh -A admin@192.168.1.100
|
- 启用代理转发,从目标主机可再 SSH 到其他机器。
7. 调试连接问题
1
| ssh -v admin@192.168.1.100
|
8. X11 转发(远程运行 GUI)
1 2
| ssh -X admin@192.168.1.100 xclock
|
- 在远程主机运行
xclock,本地显示图形界面(需本地支持 X 服务器)。
四、注意事项
- 密钥管理:私钥文件权限应为
600(chmod 600 ~/.ssh/id_rsa)。
- 跳板机:需要 OpenSSH 7.3+ 支持
-J 或 ProxyJump。
- 超时问题:可添加
-o ConnectTimeout=10 指定 10 秒超时。
- 安全性:避免在全局配置中暴露敏感信息。