一、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. 指定端口和密钥
3. 通过跳板机连接
- 通过
203.0.113.10
跳转到内网 10.0.0.50
。
4. 执行远程命令
5. 使用配置文件简化
假设 ~/.ssh/config
已配置如上:
- 直接使用别名
server1
,自动应用配置中的 HostName
、User
等。
6. 代理转发
- 启用代理转发,从目标主机可再 SSH 到其他机器。
7. 调试连接问题
8. X11 转发(远程运行 GUI)
- 在远程主机运行
xclock
,本地显示图形界面(需本地支持 X 服务器)。
四、注意事项
- 密钥管理:私钥文件权限应为
600
(chmod 600 ~/.ssh/id_rsa
)。
- 跳板机:需要 OpenSSH 7.3+ 支持
-J
或 ProxyJump
。
- 超时问题:可添加
-o ConnectTimeout=10
指定 10 秒超时。
- 安全性:避免在全局配置中暴露敏感信息。