ssh_config配置解读及ssh命令使用

一、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 *: 全局默认配置。

文件权限

确保配置文件权限正确:

1
chmod 600 ~/.ssh/config

二、ssh 命令参数

ssh 命令的基本格式是:

1
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. 基本登录

1
ssh [email protected]
  • 使用默认端口 22 和密码登录。

2. 指定端口和密钥

1
ssh -p 2222 -i ~/.ssh/server1_key [email protected]
  • 使用自定义端口和密钥文件。

3. 通过跳板机连接

1
ssh -J [email protected] [email protected]
  • 通过 203.0.113.10 跳转到内网 10.0.0.50

4. 执行远程命令

1
ssh [email protected] "ls -l"
  • 在远程主机执行 ls -l 并返回结果。

5. 使用配置文件简化

假设 ~/.ssh/config 已配置如上:

1
ssh server1
  • 直接使用别名 server1,自动应用配置中的 HostNameUser 等。

6. 代理转发

1
ssh -A [email protected]
  • 启用代理转发,从目标主机可再 SSH 到其他机器。

7. 调试连接问题

1
ssh -v [email protected]
  • 显示详细日志,帮助排查问题。

8. X11 转发(远程运行 GUI)

1
2
ssh -X [email protected]
xclock
  • 在远程主机运行 xclock,本地显示图形界面(需本地支持 X 服务器)。

四、注意事项

  1. 密钥管理:私钥文件权限应为 600chmod 600 ~/.ssh/id_rsa)。
  2. 跳板机:需要 OpenSSH 7.3+ 支持 -JProxyJump
  3. 超时问题:可添加 -o ConnectTimeout=10 指定 10 秒超时。
  4. 安全性:避免在全局配置中暴露敏感信息。