根据我的ssh_config
档案...
配置数据解析如下:
- 命令行选项
- 用户特定文件
- 系统范围的文件
话虽如此,(是的,我知道,我可以搜索man ssh_config
ANDman ssh
和(希望)记录默认值).. 对于所有当前设置,我如何“打印”活动配置。例如,类似...
ssh -o Tunnel=ethernet servername -p 2210 --print-config
SSH-2.0-OpenSSH_7.0
Command Line Options
Port 2210
Host servername
Command Line Configurations
Tunnel Ethernet
Config File
...
SSH Defaults
...
AddressFamily any (???)
BatchMode no
...
这会让你明确地知道设置了什么,以及为什么。我特别指出,因为它是没有记录默认值AddressFamily
的配置选项的完美示例。从...man ssh_config
指定连接时使用的地址族。有效参数是
any
,inet
(仅使用 IPv4)或inet6
(仅使用 IPv6)。
啊! 感谢任何建设性的建议(不仅仅是一堆RTFM
)。?
最近的 openssh 中有一个
-G
选项,其行为方式与-T
服务器端类似。通过调用
ssh -G host
,您将获得用于连接到特定主机的选项,这有助于调试ssh_config
.此外,设置更详细的日志级别 (
-vvv
) 有助于调试配置解析器。唯一潜在的缺点
-G
是它会转储给定目标主机的整个变量集,这对脚本很有用,但在视觉上排序可能有点混乱。我拼凑了一个又快又脏的 AWK 脚本来满足我的需要;给它一个在
Host
一行中找到的名称片段,它将打印在.ssh/config
文件中找到的配置块。请记住,(1)主机行可以有多个条目,(2)这确实假设配置行将为每个主机块缩进。此外,该脚本不会打印出配置文件中指定的任何全局选项,因为我不想要这些。可以对此进行大约无限的改进。真正的 AWK 大师大概可以用大约五行来编写它。