Windows 下 SSH 中的 Config 文件教程
本教程介绍如何在 Windows 系统上创建和使用 SSH 配置文件(~/.ssh/config),以简化 SSH 连接。通过定义主机别名和连接设置,可以让 SSH 命令更简洁、更易于管理。以下内容基于提供的真实配置文件,略去敏感数据,并保留其结构和注释。
有关更多详细信息,请参阅 SSH 配置文件文档。
Read more about SSH config files: https://linux.die.net/man/5/ssh_config
为什么使用 SSH 配置文件?
- 通过别名简化 SSH 命令,无需输入完整的域名或 IP 地址。
- 存储连接信息(如用户名、端口、密钥文件),便于管理。
- 指定首选认证方式和密钥文件,提升安全性。
文件位置
在 Windows 上,SSH 配置文件通常位于用户目录下的 .ssh 文件夹,即 C:\Users\<用户名>\.ssh\config(或在 PowerShell 中表示为 ~/.ssh/config)。如果文件不存在,可按以下步骤创建:
创建 .ssh 目录(如果不存在):
1
mkdir ~/.ssh
创建或编辑 config 文件:
使用文本编辑器(如记事本、VS Code)创建或编辑config文件:1
notepad ~/.ssh/config
设置权限:
Windows 的 SSH 客户端(例如 OpenSSH)对文件权限要求严格。确保.ssh目录和config文件只有当前用户有访问权限:右键
.ssh文件夹,选择“属性” -> “安全”,确保只有当前用户具有完全控制权限,其他用户(如 Everyone)无访问权限。对
config文件,同样确保只有当前用户有读写权限。使用 PowerShell 设置权限:
1
2
3
4icacls "C:\Users\<用户名>\.ssh" /inheritance:r
icacls "C:\Users\<用户名>\.ssh" /grant:r "%username%:F"
icacls "C:\Users\<用户名>\.ssh\config" /inheritance:r
icacls "C:\Users\<用户名>\.ssh\config" /grant:r "%username%:F"
基本语法
SSH 配置文件中的每个主机条目遵循以下结构:
1 | Host <别名> |
Host:连接的别名,方便记忆和使用。HostName:实际的主机名或 IP 地址。User:用于认证的用户名。IdentityFile:私钥文件的路径(例如~/.ssh/id_rsa)。Port:(可选)SSH 端口号,默认为 22。
示例 SSH 配置文件
以下是基于提供的真实配置文件的示例,保留了原始结构和注释,去除了敏感数据(如特定 IP 地址和用户邮箱):
1 | # Read more about SSH config files: https://linux.die.net/man/5/ssh_config |
条目说明
huawei:
- 别名:
huawei - 连接到
server1.example.com(示例主机名,替换了原始 IP),使用用户root和私钥~/.ssh/idrsa。 - 注释提到避免使用非用户目录路径(如
F:/encryption/.ssh/id_rsa),建议始终使用~/.ssh/。 - 默认使用端口 22。
- 别名:
vm.centos7:
- 别名:
vm.centos7 - 连接到本地 IP
192.168.58.129,使用用户root和私钥~/.ssh/rsahuowei。 - 包含注释掉的公网 IP 和 IPv6 地址,以及未启用的端口
28322。
- 别名:
vm.c8:
- 别名:
vm.c8 - 连接到 IPv6 地址
fd15:4ba5:5a2b:1008:1579:b10:8e61:bd2a,使用用户root和私钥~/.ssh/rsahuowei。 - 包含注释掉的本地 IP、公网 IP 和端口
28222。
- 别名:
github.com:
- 别名:
github.com - 连接到
ssh.github.com,使用用户git和公钥认证。 - 使用非标准端口 443 以绕过某些网络限制。
- 指定私钥
~/.ssh/idrsa。
- 别名:
使用配置文件
设置好配置文件后,可以通过别名连接到服务器。例如:
1 | ssh huawei |
等效于:
1 | ssh root@server1.example.com -i ~/.ssh/idrsa -p 22 |
对于 GitHub,可以使用以下命令克隆仓库或推送更改:
1 | git clone git@github.com:user/repo.git |
SSH 配置文件会确保使用指定的设置(如端口 443 和正确的密钥)。
注意事项
密钥文件路径:始终使用
~/.ssh/作为密钥文件路径,避免使用绝对路径(如F:/encryption/.ssh/id_rsa),以防止环境变量问题。权限设置:
.ssh目录必须只有当前用户有完全控制权限(相当于 Unix 的700)。config文件和密钥文件(如idrsa、rsahuowei)必须只有当前用户有读写权限(相当于 Unix 的600)。设置密钥文件权限:
1
2
3
4icacls "C:\Users\<用户名>\.ssh\idrsa" /inheritance:r
icacls "C:\Users\<用户名>\.ssh\idrsa" /grant:r "%username%:F"
icacls "C:\Users\<用户名>\.ssh\rsahuowei" /inheritance:r
icacls "C:\Users\<用户名>\.ssh\rsahuowei" /grant:r "%username%:F"
注释行:使用
#注释掉不需要的配置项,便于测试或临时禁用。多主机配置:可以根据需要定义多个
Host条目。
故障排除
- 权限错误:检查
IdentityFile路径是否正确,密钥文件和config文件是否具有正确的权限(仅当前用户可读写)。 - 连接被拒绝:确认
HostName和Port是否正确,服务器是否可访问。 - 配置文件被忽略:确保
config文件位于~/.ssh/config,并且权限正确。 - Windows 特定问题:如果使用 Git Bash 或 WSL,路径需使用 Unix 风格(如
~/.ssh/idrsa),而非 Windows 路径。
本教程基于提供的真实配置文件,保留了其结构和注释,提供了在 Windows 系统上设置和使用 SSH 配置文件的基础知识,帮助你更高效地管理 SSH 连接。

