![将 ssh 命令行参数转换为 .ssh/config 属性](https://linux22.com/image/609058/%E5%B0%86%20ssh%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%20.ssh%2Fconfig%20%E5%B1%9E%E6%80%A7.png)
我理解(几乎?)所有 SSH 命令行参数都可以用 ~/.ssh/config 中的属性替换。但如何系统地做到这一点并不明显:页面man
只是ssh
松散地引用配置页面(例如,“也可以在配置文件中指定端口转发。”)。man
页面ssh_config
从不提及命令行选项。
那么,是否有对应的配置参数和命令行选项的明确列表?例如,对应什么-R
?
答案1
任何ssh
可以在格式中使用的选项都-o Option=Value
可以在配置文件中以行的形式设置Option Value
。许多 CLI 标志只是长格式选项的简写,例如ssh -2
相当于ssh -o Protocol=2
,因此可以在 中设置.ssh_config
为Protocol 2
。
我相信-R x:rhost:y
对应于RemoteForward x rhost:y
。
但我认为没有办法指定没有相应长格式的标志。在我的系统中,权威列表同时出现在和ssh
手册ssh_config
页中,前者在标志下-o
,后者在页面主体中,从顶部开始。
答案2
-G 选项将显示配置选项。此脚本有助于从 ssh 命令选项生成干净的条目:
ssh2config() {
host="$(ssh -G "$@" | sed -n 's/^hostname //p')"
echo "$host"
comm -23 <(ssh -G "$@" | sort) <(ssh -G abcddd | sort) | sed 's/^/ /'
echo ''
}
使用示例:
$ ssh2config -p 2222 me@there
there
hostname there
port 2222
user me
我有一个要旨这将转换你的整个 ssh shell 历史记录。