将 ssh 命令行参数转换为 .ssh/config 属性

将 ssh 命令行参数转换为 .ssh/config 属性

我理解(几乎?)所有 SSH 命令行参数都可以用 ~/.ssh/config 中的属性替换。但如何系统地做到这一点并不明显:页面man只是ssh松散地引用配置页面(例如,“也可以在配置文件中指定端口转发。”)。man页面ssh_config从不提及命令行选项。

那么,是否有对应的配置参数和命令行选项的明确列表?例如,对应什么-R

答案1

任何ssh可以在格式中使用的选项都-o Option=Value可以在配置文件中以行的形式设置Option Value。许多 CLI 标志只是长格式选项的简写,例如ssh -2相当于ssh -o Protocol=2,因此可以在 中设置.ssh_configProtocol 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 历史记录。

相关内容