名称
ssh_config
— OpenSSH 客户端配置文件
描述
ssh(1) 获取配置数据 按以下顺序来自以下来源:
- 命令行选项
- 用户的配置文件 ( ~/.ssh/config )
- 系统范围的配置文件 ( /etc/ssh/ssh_config )
对于每个参数,将使用第一个获得的值。 这 配置文件包含由分隔的部分 Host
规格,该部分仅 适用于与规范中给出的模式之一匹配的主机。 匹配的主机名通常是命令行上给出的名称(请参阅 CanonicalizeHostname
例外选项)。
由于使用了每个参数的第一个获得的值,因此更多 应在文件开头附近给出主机特定的声明, 和最后的一般默认值。
该文件包含关键字参数对,每行一个。 线 从...开始 ' #
' 和空行是 解释为注释。 参数可以选择性地包含在 double 中 引号 (") 以表示包含空格的参数。 配置选项可以用空格或可选空格分隔 而正是一个' =
'; 后一种格式 在指定时避免需要引用空格很有用 配置选项使用 ssh
, scp
, 和 sftp
-o
选项。
可能的关键字及其含义如下(注意 关键字不区分大小写,参数区分大小写):
限制以下声明(直到下一个 Host
要么 Match
关键字)到 仅适用于那些与后面给出的模式之一匹配的主机 关键词。 如果提供了多个模式,则应将它们隔开 空白。 一个 ' *
' 作为一个 模式可用于为所有主机提供全局默认值。 主持人是 通常 的 主机名 是命令中给出 参数 行(见 CanonicalizeHostname
关键字为 例外)。
模式条目可以通过在它前面加上前缀来否定 感叹号 ('!')。 如果匹配一个否定条目, 那么 Host
条目被忽略,无论 该行上的任何其他模式是否匹配。 否定匹配是 因此可用于为通配符匹配提供例外。
查看 模式 了解更多 关于图案的信息。
限制以下声明(直到下一个 Host
要么 Match
关键字)到 仅在满足以下条件时使用 Match
关键字满足。 匹配条件是 使用一个或多个条件或单个令牌指定 all
始终匹配。 可用标准 关键词是: canonical
, final
, exec
, host
, originalhost
, user
, 和 localuser
. 这 all
标准必须单独或立即出现 后 canonical
要么 final
. 其他标准可以任意组合。 所有标准,但 all
, canonical
, 和 final
需要论证。 标准可能被否定 在前面加上感叹号 ('!')。
这 canonical
仅关键字匹配 当在主机名之后重新解析配置文件时 规范化(见 CanonicalizeHostname
选项)。 这可能有助于指定适用的条件 仅规范主机名。
这 final
关键字要求 配置被重新解析(无论是否 CanonicalizeHostname
已启用),并匹配 仅在此最后通过期间。 如果 CanonicalizeHostname
已启用,然后 canonical
和 final
在同一个传球中匹配。
这 exec
关键字执行 用户shell下的指定命令。 如果命令返回零 退出状态然后条件被认为是真的。 命令包含 必须引用空格字符。 论据 exec
接受中描述的令牌 令牌 部分。
其他关键字的条件必须是单个条目或 逗号分隔的列表,可以使用通配符和否定运算符 在 描述 模式 部分中 。 的标准 host
关键字匹配 针对目标主机名,在任何替换之后 Hostname
要么 CanonicalizeHostname
选项。 这 originalhost
关键字匹配 在命令行中指定的主机名。 这 user
关键字与目标用户名匹配 在远程主机上。 这 localuser
关键词 与运行的本地用户的名称匹配 ssh(1) (这个关键字可能在 全系统 ssh_config
文件)。
指定是否应自动将密钥添加到正在运行的 ssh-agent(1) 。 如果设置了这个选项 到 yes
并且从文件加载密钥,密钥 并将其密码添加到具有默认生命周期的代理中,就好像 通过 ssh-add(1) 。 如果设置了这个选项 到 ask
, SSH(1) 将需要使用确认 SSH_ASKPASS
添加密钥之前的程序(请参阅 ssh-add(1) 了解详情)。 如果这 选项设置为 confirm
, 每次使用密钥必须 被确认,好像 -c
选项被指定为 ssh-add(1) 。 如果此选项设置为 no
,不会向代理添加任何密钥。 交替, 可以使用描述的格式将此选项指定为时间间隔 在 时间格式 部分 sshd_config(5) 来指定 密钥在 的生命周期 ssh-agent(1) 中 , 之后它将自动删除。 论点必须是 no
(默认), yes
, confirm
(可选后跟一个时间间隔), ask
或时间间隔。
指定连接时要使用的地址系列。 有效的参数是 any
(默认), inet
(仅使用 IPv4),或 inet6
(仅使用 IPv6)。
如果设置为 yes
, 用户交互如密码 提示和主机密钥确认请求将被禁用。 这个选项 在脚本和其他没有用户的批处理作业中很有用 与 交互 ssh(1) 。 论点必须是 yes
要么 no
(这 默认)。
使用本地机器上的指定地址作为源地址 连接。 仅对具有多个地址的系统有用。
使用本地机器上指定接口的地址作为 连接的源地址。
什么时候 CanonicalizeHostname
已启用,此选项 指定在其中搜索指定的域后缀列表 目标主机。
指定主机名规范化时是否因错误而失败 失败。 默认情况下, yes
, 将尝试查找 使用系统解析器搜索规则的非限定主机名。 一个值 的 no
将造成 ssh(1) 立即失败,如果 CanonicalizeHostname
已启用并且目标 在指定的任何域中都找不到主机名 CanonicalDomains
.
控制是否执行显式主机名规范化。 这 默认, no
, 不进行任何名称重写 并让系统解析器处理所有主机名查找。 如果设置为 yes
然后,对于不使用 ProxyCommand
要么 ProxyJump
, ssh(1) 将尝试规范化 使用命令行在命令行上指定的主机名 CanonicalDomains
后缀和 CanonicalizePermittedCNAMEs
规则。 如果 CanonicalizeHostname
被设置为 always
,然后规范化应用于 代理连接也是如此。
如果启用此选项,则配置文件为 使用新的目标名称再次处理以获取任何新的 匹配中的配置 Host
和 Match
节。
指定主机名之前的最大点字符数 规范化被禁用。 默认值 1 允许单个点(即 主机名.子域)。
Specifies rules to determine whether CNAMEs should be followed when canonicalizing hostnames. The rules consist of one or more arguments of source_domain_list:target_domain_list, where source_domain_list is a pattern-list of domains that may follow CNAMEs in canonicalization, and target_domain_list is a pattern-list of domains that they may resolve to.
For example, "*.a.example.com:*.b.example.com,*.c.example.com" will allow hostnames matching "*.a.example.com" to be canonicalized to names in the "*.b.example.com" or "*.c.example.com" domains.
Specifies which algorithms are allowed for signing of certificates by certificate authorities (CAs). The default is:
ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com, rsa-sha2-512,rsa-sha2-256
ssh(1) will not accept host certificates signed using algorithms other than those specified.
指定从中读取用户证书的文件。 一种 必须单独提供相应的私钥才能使用 证书要么来自 IdentityFile
指示 要么 -i
标志到 ssh(1) , 通过 ssh-agent(1) ,或通过 PKCS11Provider
要么 SecurityKeyProvider
.
Arguments to CertificateFile
may use the tilde syntax to refer to a user's home directory, the tokens described in the TOKENS section and environment variables as described in the ENVIRONMENT VARIABLES section.
可以指定多个证书文件 配置文件; 这些证书将依次尝试。 多种的 CertificateFile
指令将添加到 用于身份验证的证书列表。
如果设置为 yes
ssh(1) 将额外检查主机 IP 地址 known_hosts 文件中的 。 这允许它 检测主机密钥是否因 DNS 欺骗而更改,并将添加以下地址 目标主机到 ~/.ssh/known_hosts 中 过程,无论设置如何 StrictHostKeyChecking
. 如果该选项设置为 no
(默认),检查不会 执行。
指定允许的密码及其优先顺序。 多种的 密码必须以逗号分隔。 如果指定的列表以 '+' 字符,则将附加指定的密码 到默认设置而不是替换它们。 如果指定的列表开始 带有“-”字符,然后是指定的密码(包括 通配符)将从默认设置中删除,而不是替换它们。 如果指定的列表以 '^' 字符开头,则 指定的密码将放置在默认设置的开头。
支持的密码是:
3des-cbc aes128-cbc aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr aes128-gcm@openssh.com aes256-gcm@openssh.com chacha20-poly1305@openssh.com
默认为:
chacha20-poly1305@openssh.com, aes128-ctr,aes192-ctr,aes256-ctr, aes128-gcm@openssh.com,aes256-gcm@openssh.com
可用密码列表也可以使用 “ssh -Q 密码”。
指定指定的所有本地、远程和动态端口转发 在配置文件或命令行中被清除。 这个选项 主要用于从 ssh(1) 命令行清除端口 配置文件中设置的转发,并由自动设置 scp(1) 和 sftp(1) 。 论点必须是 yes
要么 no
(这 默认)。
指定是否使用压缩。 论点必须是 yes
要么 no
(这 默认)。
指定退出前的尝试次数(每秒一次)。 这 参数必须是整数。 这在脚本中可能很有用,如果 连接有时会失败。 默认值为 1。
指定连接到 SSH 服务器时使用的超时(以秒为单位), 而不是使用默认的系统 TCP 超时。 已应用此超时 建立连接和执行初始 SSH 协议握手和密钥交换。
启用通过单个网络连接共享多个会话。 当设置为 yes
, ssh(1) 将监听一个 使用指定的控制套接字 ControlPath
争论。 其他会话可以使用相同的连接到此套接字 ControlPath
和 ControlMaster
设置 no
(默认)。 这些会话将尝试重用主实例的 网络连接而不是启动新的连接,但会回退到 如果控制插座不存在,则正常连接,或者不存在 听。
将此设置为 ask
将造成 ssh(1) 监听控制 连接,但需要使用确认 ssh-askpass(1) 。 如果 ControlPath
无法打开, ssh(1) 将继续而不连接 到主实例。
X11 和 ssh-agent(1) 通过这些多路复用连接支持转发,但是 display 和 agent 转发的将是属于 master 的 连接,即无法转发多个显示器或 代理。
两个额外的选项允许机会多路复用: 尝试使用主连接,但如果出现以下情况,则退回创建新的连接 一个不存在。 这些选项是: auto
和 autoask
. 这 后者需要像 ask
选项。
指定用于连接共享的控制套接字的路径为 中描述的 ControlMaster
以上部分或 字符串 none
禁用连接共享。 论据 ControlPath
可以使用波浪号语法 要引用用户的主目录,在 TOKENS 部分和环境变量 如中所述 环境变量 部分。 建议任何 ControlPath
用于机会性连接共享的至少包括 %h、%p 和 %r (或 %C)并放置在不可写的目录中 其他用户。 这确保共享连接是唯一的 确定。
配合使用时 ControlMaster
, 指定主连接应在后台保持打开状态 (等待未来的客户端连接)初始客户端之后 连接已关闭。 如果设置为 no
(这 默认),那么主连接将不会被放入 后台,并将在初始客户端连接后立即关闭 关闭。 如果设置为 yes
或 0,则主 连接将无限期地保留在后台(直到被杀死或 通过诸如“ssh -O exit”之类的机制关闭)。 如果设置为 以秒为单位的时间,或任何记录在 sshd_config(5) ,然后 后台主连接将在它完成后自动终止 在指定的时间内保持空闲(没有客户端连接)。
指定本地机器上的 TCP 端口通过 安全通道,然后使用应用协议来确定 从远程机器连接到哪里。
论点必须是 [ 绑定地址 :] 端口 。 IPv6 地址可以通过将地址括在方括号中来指定。 经过 默认情况下,本地端口按照 GatewayPorts
环境。 然而,一个明确的 bind_address 可用于将连接绑定到 具体地址。 该 bind_address 的 localhost
表示监听端口是 仅限本地使用,而空地址或“*” 表示该端口应可从所有接口使用。
目前支持 SOCKS4 和 SOCKS5 协议,并且 ssh(1) 将充当 SOCKS 服务器。 可以指定多个转发,也可以额外转发 在命令行中给出。 只有超级用户才能转发特权 端口。
将此选项设置为 yes
在全球客户 配置文件 /etc/ssh/ssh_config 启用 帮助程序的使用 ssh-keysign(8) 期间 HostbasedAuthentication
. 论点必须是 yes
要么 no
(默认)。 此选项应放置在非主机特定部分。 看 ssh-keysign(8) 了解更多 信息。
设置转义字符(默认: ' ~
')。 转义符也可以 在命令行中设置。 参数应该是单个字符, ' ^
' 后跟一个字母,或 none
完全禁用转义字符 (使连接对二进制数据透明)。
指定 是否 ssh(1) 应该终止 如果不能建立所有请求的动态、隧道、本地、 和远程端口转发,(例如,如果任一端无法绑定和 侦听指定端口)。 注意 ExitOnForwardFailure
不适用于连接 通过端口转发,并且不会,例如,导致 ssh(1) 退出,如果 TCP 连接到 最终转发目的地失败。 论点必须是 yes
要么 no
(这 默认)。
指定显示密钥指纹时使用的哈希算法。 有效的 选项是: md5
和 sha256
(默认)。
要求 ssh
前去后台 命令执行。 这很有用,如果 ssh
要去 要求输入密码或密码短语,但用户希望在 背景。 这意味着 StdinNull
配置选项设置为“是”。 推荐的方式 在远程站点启动 X11 程序类似于 ssh -f host xterm
,这与 ssh host xterm
如果 ForkAfterAuthentication
配置选项是 设置为“是”。
如果 ExitOnForwardFailure
配置选项设置为“是”,然后客户端 开始于 ForkAfterAuthentication
配置选项设置为“是”将等待所有 放置前远程端口转发成功建立 自己在后台。 这个关键字的参数必须是 yes
(与 -f
选项)或 no
(默认)。
指定与身份验证代理(如果有)的连接是否将 转发到远程机器。 论证可能是 yes
, no
(默认),一个 代理套接字的显式路径或环境变量的名称 (以 '$' 开头)在其中找到路径。
应谨慎启用代理转发。 用户 绕过远程主机上的文件权限的能力(对于 代理的 Unix 域套接字)可以通过 转发连接。 攻击者无法从 代理,但是他们可以对启用它们的密钥执行操作 使用加载到代理中的身份进行身份验证。
指定是否将自动重定向 X11 连接 安全通道和 DISPLAY
放。 论据 必须是 yes
要么 no
(这 默认)。
应谨慎启用 X11 转发。 用户与 绕过远程主机上的文件权限的能力(对于用户的 X11 授权数据库)可以通过访问本地 X11 显示 转发连接。 然后攻击者可能能够执行活动 例如击键监控,如果 ForwardX11Trusted
选项也已启用。
使用描述的格式为不受信任的 X11 转发指定超时 在 时间格式 部分 sshd_config(5) 。 X11 连接 由 收到的 ssh(1) 在此时间之后 将是 拒绝了。 环境 ForwardX11Timeout
归零 禁用超时并在生命周期内允许 X11 转发 联系。 默认是禁用不受信任的 X11 转发后 二十分钟过去了。
如果此选项设置为 yes
, 远程 X11 客户端 将可以完全访问原始 X11 显示器。
如果此选项设置为 no
(这 默认),远程 X11 客户端将被视为不受信任并被阻止 窃取或篡改属于受信任 X11 客户端的数据。 此外,使用的 xauth(1) 令牌 因为会话将设置为在 20 分钟后过期。 远程客户端 在此时间之后将被拒绝访问。
有关完整详细信息,请参阅 X11 安全扩展规范 关于对不受信任的客户施加的限制。
指定是否允许远程主机连接到本地转发 端口。 默认情况下, ssh(1) 绑定本地端口 转发到环回地址。 这可以防止其他远程主机 连接到转发端口。 GatewayPorts
可 用于指定 ssh 应将本地端口转发绑定到 通配符地址,从而允许远程主机连接到转发 端口。 论点必须是 yes
要么 no
(默认)。
指定一个或多个文件用于全局主机密钥数据库, 由空格分隔。 默认是 /etc/ssh/ssh_known_hosts , /etc/ssh/ssh_known_hosts2 。
指定是否允许基于 GSSAPI 的用户身份验证。 这 默认是 no
.
将凭据转发(委托)到服务器。 默认是 no
.
表示 ssh(1) 应该散列主机 名称和地址添加到 ~/.ssh/known_hosts 。 可以使用这些散列名称 通常通过 ssh(1) 和 sshd(8) ,但它们不会在视觉上显示 如果文件的内容被披露,则识别信息。 默认的 是 no
. 请注意,现有名称和地址 已知主机文件不会自动转换,但可以手动转换 使用 散列 ssh-keygen(1) 。
指定将用于基于主机的签名算法 作为以逗号分隔的模式列表的身份验证。 或者,如果 指定的列表以“+”字符开头,然后是 指定的签名算法将改为附加到默认集 取代它们。 如果指定的列表以“-”开头 字符,然后是指定的签名算法(包括通配符) 将从默认设置中删除而不是替换它们。 如果 指定的列表以 '^' 字符开头,然后是 指定的签名算法将放在默认的头部 放。 此选项的默认值是:
ssh-ed25519-cert-v01@openssh.com, ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, sk-ssh-ed25519-cert-v01@openssh.com, sk-ecdsa-sha2-nistp256-cert-v01@openssh.com, rsa-sha2-512-cert-v01@openssh.com, rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ssh-ed25519, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, sk-ssh-ed25519@openssh.com, sk-ecdsa-sha2-nistp256@openssh.com, rsa-sha2-512、rsa-sha2-256、ssh-rsa
这 -Q
选项 ssh(1) 可用于列出支持的 签名算法。 这以前称为 HostbasedKeyTypes。
指定是否使用公钥尝试基于 rhosts 的身份验证 验证。 论点必须是 yes
要么 no
(默认)。
指定客户端要使用的主机密钥签名算法 按优先顺序。 或者,如果指定的列表以 '+' 字符,则指定的签名算法将 附加到默认设置而不是替换它们。 如果指定 列表以“-”字符开头,然后是指定的 签名算法(包括通配符)将从 默认设置而不是替换它们。 如果指定的列表以 '^' 字符,则指定的签名算法将 放置在默认集的开头。 此选项的默认值是:
ssh-ed25519-cert-v01@openssh.com, ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, sk-ssh-ed25519-cert-v01@openssh.com, sk-ecdsa-sha2-nistp256-cert-v01@openssh.com, rsa-sha2-512-cert-v01@openssh.com, rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ssh-ed25519, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, sk-ecdsa-sha2-nistp256@openssh.com, sk-ssh-ed25519@openssh.com, rsa-sha2-512、rsa-sha2-256、ssh-rsa
如果目标主机的主机密钥是已知的,那么这 default 被修改为更喜欢他们的算法。
可用签名算法的列表也可能是 使用“ssh -Q HostKeyAlgorithms”获得。
指定在以下情况下应使用的别名而不是真实主机名 在主机密钥数据库文件中查找或保存主机密钥以及何时 验证主机证书。 此选项对于 SSH 隧道很有用 连接或用于在单个主机上运行的多个服务器。
指定要登录的真实主机名。 这可用于指定 主机的昵称或缩写。 论据 Hostname
接受中描述的令牌 令牌 部分。 数字 IP 地址是 也允许(在命令行和 Hostname
规格)。 默认是名称 在命令行中给出。
指定 ssh(1) 应该只使用 配置的身份验证和证书文件(或者 默认文件,或那些明确配置在 ssh_config
文件或传递 ssh(1) 命令行),即使 ssh-agent(1) 或 PKCS11Provider
要么 SecurityKeyProvider
提供更多身份。 这 此关键字的参数必须是 yes
要么 no
(默认)。 此选项用于 ssh-agent 提供许多不同身份的情况。
指定 UNIX 用来-domain插座 与身份验证代理通信。
此选项覆盖 SSH_AUTH_SOCK
环境变量,可以是 用于选择特定的代理。 将套接字名称设置为 none
禁用身份验证 代理人。 如果指定了字符串“SSH_AUTH_SOCK”,则 套接字的位置将从 SSH_AUTH_SOCK
环境变量。 否则如果 指定的值以 '$' 字符开头,然后它 将被视为包含位置的环境变量 插座。
论据 IdentityAgent
可以使用 代字号语法来引用用户的主目录,描述的标记 在 TOKENS 部分和环境中 中描述的变量 环境变量 部分。
指定用户的 DSA、ECDSA、身份验证器托管的文件 ECDSA、Ed25519、身份验证器托管的 Ed25519 或 RSA 身份验证 身份被读取。 默认为 ~/.ssh/id_dsa , ~/.ssh/id_ecdsa , ~/.ssh/id_ecdsa_sk , ~/.ssh/id_ed25519 , ~/.ssh/id_ed25519_sk 和 ~/.ssh/id_rsa 。 此外,任何身份 认证代理所代表的将用于认证 除非 IdentitiesOnly
设置。 如果没有证书 已被明确指定 CertificateFile
, ssh(1) 将尝试加载证书 通过附加获得的文件名信息 -cert.pub 到指定路径 IdentityFile
.
论据 IdentityFile
可以使用 代字号语法来引用用户的主目录或描述的令牌 在 令牌 部分。
可以指定多个身份文件 配置文件; 所有这些身份都将依次尝试。 多种的 IdentityFile
指令将添加到 尝试的身份列表(此行为不同于其他 配置指令)。
IdentityFile
可用于 与 IdentitiesOnly
选择哪个 在身份验证期间提供代理中的身份。 IdentityFile
也可以结合使用 和 CertificateFile
为了提供任何 身份验证也需要证书。
指定要忽略的未知选项的模式列表,如果它们是 在配置解析中遇到。 这可用于抑制错误 如果 ssh_config
包含的选项是 无法被 识别 ssh(1) 。 推荐 那 IgnoreUnknown
早早上市 配置文件,因为它不会应用于未知选项 出现在它面前。
包括指定的配置文件。 多个路径名可能是 指定并且每个路径名可能包含 glob(7) 通配符和,对于用户 配置,类似 shell 的 '~' 对用户主页的引用 目录。 通配符将按词法顺序展开和处理。 假设没有绝对路径的文件在 ~/.ssh 如果包含在用户配置文件中或 /etc/ssh 如果包含在系统配置中 文件。 Include
指令可能出现在一个 Match
要么 Host
阻止到 执行有条件的包含。
为连接指定 IPv4 服务类型或 DSCP 类。 公认 值是 af11
, af12
, af13
, af21
, af22
, af23
, af31
, af32
, af33
, af41
, af42
, af43
, cs0
, cs1
, cs2
, cs3
, cs4
, cs5
, cs6
, cs7
, ef
, le
, lowdelay
, throughput
, reliability
,一个数值,或 none
使用操作系统默认值。 这 option 可能需要一个或两个参数,用空格分隔。 如果一个 参数被指定,它被无条件地用作数据包类。 如果 指定了两个值,第一个是自动选择的 交互式会话,第二个用于非交互式会话。 这 默认是 af21
(低延迟数据)用于交互式 会议和 cs1
(Lower Effort) 为 非交互式会话。
指定是否使用键盘交互认证。 论据 这个关键字必须是 yes
(默认)或 no
. ChallengeResponseAuthentication
已弃用 为此的别名。
指定在键盘交互中使用的方法列表 验证。 多个方法名称必须以逗号分隔。 默认的 是使用服务器指定的列表。 可用的方法因人而异 关于服务器支持的内容。 对于 OpenSSH 服务器,它可能是零个或多个 的: bsdauth
, pam
, 和 skey
.
指定可用的 KEX(密钥交换)算法。 多种算法 必须以逗号分隔。 如果指定的列表以 '+' 字符,则将附加指定的方法 到默认设置而不是替换它们。 如果指定的列表开始 带有“-”字符,然后是指定的方法(包括 通配符)将从默认设置中删除,而不是替换它们。 如果指定的列表以 '^' 字符开头,则 指定的方法将放置在默认集的开头。 这 默认为:
曲线25519-sha256,曲线25519-sha256@libssh.org, ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256
可用的密钥交换算法列表也可能是 使用“ssh -Q kex”获得。
指定用于获取主机密钥列表的命令,此外 列出的那些 UserKnownHostsFile
和 GlobalKnownHostsFile
. 这个命令被执行 文件被读取后。 它可以将主机密钥行写入标准 以与通常文件相同的格式输出(在 验证主机密钥 部分 在 ssh(1) 中 )。 论据 KnownHostsCommand
接受中描述的令牌 在 TOKENS 部分。 命令可能是 每个连接调用多次:准备首选项时调用一次 要使用的主机密钥算法列表,再次获取主机密钥 请求的主机名,如果 CheckHostIP
是 启用,再一次获取与服务器匹配的主机密钥 地址。 如果命令异常退出或返回非零退出状态 然后连接终止。
指定成功后在本地机器上执行的命令 连接到服务器。 命令字符串扩展到 行,并使用用户的 shell 执行。 论据 LocalCommand
接受中描述的令牌 令牌 部分。
命令同步运行,无权访问 所述的会话 的ssh(1) 那产生 它。 它不应用于交互式命令。
该指令将被忽略,除非 PermitLocalCommand
已启用。
指定本地计算机上的 TCP 端口通过 从远程机器到指定主机和端口的安全通道。 这 第一个参数指定侦听器,可能是 [ bind_address :] 端口 或 Unix 域套接字路径。 第二个参数是目的地,可能是 host 主机 : 端口 或 Unix 域 如果远程主机支持套接字路径。
IPv6 地址可以通过将地址包含在 方括号。 可以指定多个转发,并附加 可以在命令行上给出转发。 只有超级用户可以 转发特权端口。 默认情况下,本地端口绑定在 根据 GatewayPorts
环境。 但是,显式的 bind_address 可用于 将连接绑定到特定地址。 这 bind_address 的 localhost
表示监听端口只绑定本地使用,而一个 空地址或“*”表示端口应为 可从所有接口获得。 Unix 域套接字路径可以使用 令牌中所描述的 TOKENS 部 和环境变量,如 环境变量 部分。
给出从日志记录消息时使用的详细级别 ssh(1) 。 可能的值是:QUIET、 致命、错误、信息、详细、调试、调试 1、调试 2 和调试 3。 这 默认为信息。 DEBUG 和 DEBUG1 是等价的。 每个 DEBUG2 和 DEBUG3 指定更高级别的详细输出。
为 LogLevel 指定一个或多个覆盖。 覆盖包括 匹配源文件、函数和行号的模式列表 强制详细记录。 例如,覆盖模式:
kex.c:*:1000,*:kex_exchange_identification():*,packet.c:*
将启用详细日志记录 对于 第 1000 kex.c 的 行 , kex_exchange_identification
() 函数,以及 中的所有代码 packet.c 文件 。 此选项用于调试,不启用任何覆盖 默认。
按顺序指定 MAC(消息验证码)算法 偏爱。 MAC 算法用于数据完整性保护。 多个算法必须以逗号分隔。 如果指定的列表开始 带有“+”字符,则指定的算法将是 附加到默认设置而不是替换它们。 如果指定 列表以“-”字符开头,然后是指定的 算法(包括通配符)将从默认集中删除 而不是替换它们。 如果指定的列表以 '^' 字符,则将放置指定的算法 在默认集的头部。
包含“-etm”的算法计算MAC 加密后(加密然后 mac)。 这些被认为更安全 建议使用它们。
默认为:
umac-64-etm@openssh.com,umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com,umac-128@openssh.com, hmac-sha2-256,hmac-sha2-512,hmac-sha1
还可以获得可用的MAC算法列表 使用“ssh -Q mac”。
NoHostAuthenticationForLocalhost
禁用 localhost(环回地址)的主机身份验证。 这 此关键字的参数必须是 yes
要么 no
(默认)。
指定放弃前密码提示的次数。 的论点 this 关键字必须是整数。 默认值为 3。
指定是否使用密码认证。 对此的论据 关键字必须是 yes
(默认)或 no
.
允许通过本地命令执行 LocalCommand
选项或使用 !
命令 转义序列 ssh(1) 中的 。 论据 必须是 yes
要么 no
(这 默认)。
指定远程 TCP 端口转发的目的地 允许的时候 RemoteForward
用作袜子 代理人。 转发规范必须是以下形式之一:
PermitRemoteOpen
主机 : 端口PermitRemoteOpen
IPv4_addr : 端口PermitRemoteOpen
[IPv6_addr] : 端口
可以通过将它们分开来指定多个转发 空白。 一个论点 any
可以用来 删除所有限制并允许任何转发请求。 一个论点 的 none
可以用来禁止所有转发 要求。 通配符“*”可用于主机或端口 分别允许所有主机或端口。 否则,没有模式匹配或 地址查找是在提供的名称上执行的。
指定要使用的 PKCS#11 提供程序或 none
到 指示不应使用任何提供程序(默认)。 的论点 this 关键字是 PKCS#11 共享库的路径 ssh(1) 应该用于与 PKCS#11 令牌为用户身份验证提供密钥。
指定要在远程主机上连接的端口号。 默认是 22.
指定客户端应尝试身份验证方法的顺序。 这允许客户端更喜欢一种方法(例如 keyboard-interactive
) 超过另一种方法(例如 password
)。 默认为:
gssapi-with-mic,hostbased,publickey, 键盘交互,密码
指定用于连接到服务器的命令。 命令字符串 扩展到行尾,并使用用户的 shell 执行 ' exec
' 指令避免 挥之不去的外壳过程。
论据 ProxyCommand
接受 令牌中所描述的 TOKENS 部。 命令基本上可以是任何东西,应该从它的标准中读取 输入并写入其标准输出。 它最终应该连接一个 sshd(8) 在某些机器上运行的 服务器, 或执行 sshd -i
某处。 主机密钥 管理将使用 Hostname
的 正在连接的主机(默认为用户输入的名称)。 将命令设置为 none
禁用此选项 完全。 注意 CheckHostIP
不可用 用于连接代理命令。
该指令与 nc(1) 及其代理支持。 例如, 以下指令将通过 HTTP 代理连接 192.0.2.0:
ProxyCommand /usr/bin/nc -X 连接 -x 192.0.2.0:8080 %h %p
将一个或多个跳转代理指定为 [ 用户 @ ] 主机 [: 端口 ] 或 ssh URI。 多个代理可以用逗号分隔,并且 将依次访问。 设置这个选项会导致 ssh(1) 连接到目标主机 首先建立一个 ssh(1) 连接到 指定的 ProxyJump
主机,然后建立一个 TCP 从那里转发到最终目标。 将主机设置为 none
完全禁用此选项。
请注意,此选项将与 ProxyCommand
选项 - 以指定者为准 first 将阻止另一个的后续实例生效。
另请注意,目标主机的配置 (通过命令行或配置文件提供)不是 一般应用于跳转主机。 ~/.ssh/config 如果跳转主机需要特定配置,则应使用。
Specifies that ProxyCommand
will pass a connected file descriptor back to ssh(1) instead of continuing to execute and pass data. The default is no
.
指定将用于公钥的签名算法 作为以逗号分隔的模式列表的身份验证。 如果指定 列表以“+”字符开头,然后是算法 它将被附加到默认值而不是替换它。 如果 指定的列表以“-”字符开头,然后是 指定的算法(包括通配符)将从 默认设置而不是替换它们。 如果指定的列表以 '^' 字符,则将放置指定的算法 在默认集的头部。 此选项的默认值是:
ssh-ed25519-cert-v01@openssh.com, ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, sk-ssh-ed25519-cert-v01@openssh.com, sk-ecdsa-sha2-nistp256-cert-v01@openssh.com, rsa-sha2-512-cert-v01@openssh.com, rsa-sha2-256-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ssh-ed25519, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, sk-ssh-ed25519@openssh.com, sk-ecdsa-sha2-nistp256@openssh.com, rsa-sha2-512、rsa-sha2-256、ssh-rsa
可用签名算法的列表也可能是 使用“ssh -Q PubkeyAcceptedAlgorithms”获得。
指定是否尝试公钥认证。 对此的论据 关键字必须是 yes
(默认)或 no
.
指定在发送之前可以传输的最大数据量 重新协商会话密钥,可选地跟随最大数量的 在重新协商会话密钥之前可能经过的时间。 首先 参数以字节为单位指定,后缀可能为“K”, “M”或“G”表示千字节、兆字节、 或千兆字节,分别。 默认值介于 '1G' 和 '4G',取决于密码。 可选的第二个值是 以秒为单位指定,并且可以使用 TIME 中记录的任何单位 格式部分 sshd_config(5) 的 。 默认值为 RekeyLimit
是 default none
,这意味着重新加密是 在发送密码的默认数据量后执行或 收到,并且没有进行基于时间的重新加密。
指定成功后在远程机器上执行的命令 连接到服务器。 命令字符串扩展到 行,并使用用户的 shell 执行。 论据 RemoteCommand
接受中描述的令牌 令牌 部分。
指定远程计算机上的 TCP 端口通过 安全通道。 远程端口可以转发到指定的 来自本地机器的主机和端口,或者可以充当 SOCKS 4/5 代理 允许远程客户端从本地连接到任意目的地 机器。 第一个参数是监听规范,可能是 [ bind_address :] 端口 或者,如果 远程主机支持它,一个 Unix 域套接字路径。 如果转发到 特定目的地,那么第二个参数必须是 host 主机 : 端口 或 Unix 域 套接字路径,否则如果未指定目标参数,则 远程转发将建立为 SOCKS 代理。 当充当 SOCKS 代理连接的目的地可以被限制 PermitRemoteOpen
.
IPv6 地址可以通过将地址包含在 方括号。 可以指定多个转发,并附加 可以在命令行上给出转发。 特权端口可以是 仅在远程计算机上以 root 身份登录时转发。 Unix 域套接字路径可以使用在 TOKENS 部分和环境 中描述的变量 环境变量 部分。
如果 端口 参数为 0,则监听 端口将在服务器上动态分配并报告给 客户端在运行时。
如果 bind_address 没有指定 , 默认是只绑定到环回地址。 如果 bind_address 是 ' *
' 或一个空字符串,然后 请求转发以侦听所有接口。 指定远程 bind_address 只有在服务器的 GatewayPorts
选项已启用(请参阅 sshd_config(5) )。
指定是否为会话请求伪 tty。 论据 可能是以下之一: no
(从不要求 TTY), yes
(当标准输入是一个时,总是请求一个 TTY TTY), force
(总是要求 TTY)或 auto
(打开登录会话时请求 TTY)。 此选项反映了 -t
和 -T
标志为 ssh(1) 。
指定撤销的主机公钥。 此文件中列出的键将是 拒绝主机身份验证。 请注意,如果此文件不存在或 不可读,则将拒绝所有主机的主机身份验证。 密钥可以指定为文本文件,每行列出一个公钥,或 作为由生成的 OpenSSH 密钥撤销列表 (KRL) ssh-keygen(1) 。 了解更多信息 关于 KRL,请参阅 KEY REVOCATION LISTS 部分 ssh-keygen(1) 。
指定加载任何 FIDO 时将使用的库的路径 身份验证器托管的密钥,覆盖使用内置的默认值 USB HID 支持。
如果指定的值以 '$' 开头 字符,那么它将被视为包含的环境变量 图书馆的路径。
指定来自本地的哪些变量 环境(7) 应发送到 服务器。 服务器也必须支持,并且必须配置服务器 接受这些环境变量。 请注意, TERM
环境变量总是在任何时候发送 请求伪终端,因为它是协议要求的。 参考 AcceptEnv
在 sshd_config(5) 了解如何 配置服务器。 变量由名称指定,其中可能包含 通配符。 多个环境变量可以被分隔 空白或跨多个 SendEnv
指令。
查看 模式 了解更多 关于图案的信息。
可以清除之前设置的 SendEnv
通过前缀模式的变量名称 与 - 。 默认是不发送任何 环境变量。
设置可以发送的服务器活动消息的数量(见下文) 没有 ssh(1) 接收任何消息 从服务器。 如果在服务器活动消息时达到此阈值 正在发送,ssh 将断开与服务器的连接,终止 会议。 需要注意的是,服务器活动消息的使用是 非常不同 TCPKeepAlive
(以下)。 这 服务器活动消息通过加密通道发送,因此 不会被欺骗。 TCP keepalive 选项启用 TCPKeepAlive
是可欺骗的。 服务器活着 当客户端或服务器依赖于知道何时 连接变得无响应。
默认值为 3。例如,如果 ServerAliveInterval
(见下文)设置为 15 和 ServerAliveCountMax
保留为默认值,如果 服务器无响应,ssh 将在大约之后断开连接 45 秒。
以秒为单位设置超时间隔,如果没有数据 从服务器收到, ssh(1) 将发送 通过加密通道的消息以请求来自 服务器。 默认为0,表示不会发送这些消息 到服务器。
可用于请求远程调用子系统 系统,或者完全阻止远程命令的执行。 后者 仅用于转发端口。 这个关键字的参数必须是 none
(与 -N
选项), subsystem
(与 -s
选项)或 default
(外壳或命令执行)。
直接指定一个或多个环境变量及其内容 发送到服务器。 类似于 SendEnv
, 和 的例外 TERM
变量,服务器 必须准备接受环境变量。
从 重定向标准输入 /dev/null (实际上,防止 从标准输入读取)。 无论是这个还是等价的 -n
选项必须在以下情况下使用 ssh
在后台运行。 对此的论据 关键字必须是 yes
(与 -n
选项)或 no
(这 默认)。
设置创建文件时使用的八进制文件创建模式掩码 (umask) 用于本地或远程端口转发的 Unix 域套接字文件。 这个选项 仅用于端口转发到 Unix 域套接字文件。
默认值为 0177,它创建一个 Unix 域套接字 只能由所有者读取和写入的文件。 请注意,并非所有 操作系统尊重 Unix 域套接字文件上的文件模式。
指定是否为本地删除现有的 Unix 域套接字文件 或在创建新端口之前进行远程端口转发。 如果套接字文件 已经存在并且 StreamLocalBindUnlink
不是 启用, ssh
将无法将端口转发到 Unix 域套接字文件。 此选项仅用于端口转发 到 Unix 域套接字文件。
论点必须是 yes
要么 no
(默认)。
如果此标志设置为 yes
, ssh(1) 永远不会自动添加主机 密钥 ~/.ssh/known_hosts 文件的 ,并拒绝 连接到主机密钥已更改的主机。 这提供了最大 防止中间人 (MITM) 攻击,尽管它可以 当 /etc/ssh/ssh_known_hosts 文件是 维护不善或频繁连接到新主机时。 此选项强制用户手动添加所有新主机。
如果此标志设置为“accept-new”,则 ssh 将自动将新的主机密钥添加到用户已知的主机文件中,但 将不允许连接到已更改主机密钥的主机。 如果这 标志设置为“no”或“off”,ssh 将 自动将新的主机密钥添加到用户已知的主机文件中并允许 连接到具有更改主机密钥的主机以继续进行,受某些限制 限制。 如果此标志设置为 ask
(这 默认),新的主机密钥将仅添加到用户已知的主机文件中 在用户确认这是他们真正想做的事情之后,并且 ssh 将拒绝连接到主机密钥已更改的主机。 主人 在所有情况下都会自动验证已知主机的密钥。
提供在记录消息时使用的设施代码 ssh(1) 。 可能的值是:DAEMON、 用户、授权、LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5、LOCAL6、 本地 7. 默认为用户。
指定系统是否应该将 TCP keepalive 消息发送到 对方。 如果它们被发送,连接的死亡或其中之一的崩溃 机器将得到适当的注意。 然而,这意味着 如果路由暂时关闭,连接将中断,并且有些人 觉得很烦。
默认是 yes
(发送 TCP keepalive 消息),如果网络出现故障,客户端会注意到 或远程主机死亡。 这在脚本中很重要,许多用户 也想要
要禁用 TCP keepalive 消息,该值应设置为 no
. 也可以看看 ServerAliveInterval
用于协议级 保活。
请求 tun(4) 设备之间的转发 客户端和服务器。 论点必须是 yes
, point-to-point
(层 3), ethernet
(第 2 层),或 no
(默认)。 指定 yes
请求默认隧道模式,即 point-to-point
.
指定 的 tun(4) 要打开 设备 客户端( local_tun )和服务器 ( remote_tun )。
论点必须是 local_tun [: remote_tun ]。 这 设备可以通过数字 ID 或关键字指定 any
,它使用下一个可用的隧道 设备。 如果 remote_tun 未指定 ,则它 默认为 any
. 默认是 any:any
.
指定 是否 ssh(1) 应接受 来自服务器的额外主机密钥的通知之后发送 身份验证已完成并将它们添加到 UserKnownHostsFile
. 论点必须是 yes
, no
要么 ask
. 此选项允许学习替代 服务器的主机密钥,并通过允许 服务器在删除旧公钥之前发送替换公钥。
仅当密钥用于 验证主机已经被信任或明确接受 用户,主机通过身份验证 UserKnownHostsFile
(即不是 GlobalKnownHostsFile
) 并且主持人是 使用普通密钥而不是证书进行身份验证。
UpdateHostKeys
默认启用 如果用户没有覆盖默认值 UserKnownHostsFile
设置并没有启用 VerifyHostKeyDNS
, 否则 UpdateHostKeys
将被设置为 no
.
如果 UpdateHostKeys
被设置为 ask
,然后要求用户确认 修改 known_hosts 文件。 确认是目前 不兼容 ControlPersist
,并且将 如果启用则禁用。
目前,只有 sshd(8) 从 OpenSSH 6.8 及更高版本支持“hostkeys@openssh.com” 用于通知客户端所有服务器的协议扩展 主机密钥。
指定登录的用户。 当不同的用户 name 用于不同的机器。 这样可以省去必须的麻烦 记得在命令行上给出用户名。
指定一个或多个文件用于用户主机密钥数据库, 由空格分隔。 每个文件名都可以使用波浪号表示 用户的主目录,在 TOKENS 部分和环境变量 如中所述 环境变量 部分。 默认为 ~/.ssh/known_hosts , ~/.ssh/known_hosts2 。
指定是否使用 DNS 和 SSHFP 资源验证远程密钥 记录。 如果此选项设置为 yes
, 客户端 将隐式信任与来自 DNS 的安全指纹匹配的密钥。 将处理不安全的指纹,就像此选项设置为 ask
. 如果此选项设置为 ask
, 指纹匹配信息将 显示,但用户仍需要根据 到 StrictHostKeyChecking
选项。 默认的 是 no
.
如果此标志设置为 yes
, ASCII 艺术 另外打印远程主机密钥指纹的表示 到登录时的指纹字符串和未知的主机密钥。 如果这个标志 被设置为 no
(默认),无指纹串 在登录时打印并且只打印指纹字符串 未知的主机密钥。
指定完整路径名 xauth(1) 程序。 默认是 /usr/X11R6/bin/xauth 。
PATTERNS
A pattern consists of zero or more non-whitespace characters, ‘*’ (a wildcard that matches zero or more characters), or ‘?’ (a wildcard that matches exactly one character). For example, to specify a set of declarations for any host in the ".co.uk" set of domains, the following pattern could be used:
Host *.co.uk
以下模式将匹配 192.168.0.[0-9] 中的任何主机 网络范围:
Host 192.168.0.?
一种 模式列表 是一个逗号分隔的模式列表。 模式列表中的模式可能是 通过在它们前面加上感叹号 ('!') 来否定。 为了 例如,允许在组织内的任何地方使用密钥 除了“拨号”池之外,以下条目(在 authorized_keys) 可以使用:
from="!*.dialup.example.com,*.example.com"
请注意,否定匹配永远不会产生积极的结果 本身。 例如,尝试将“host3”与 以下模式列表将失败:
from="!host1,!host2"
这里的解决方案是包含一个会产生正数的项 匹配,例如通配符:
from="!host1,!host2,*"
代币
某些关键字的参数可以使用令牌,它们是 在运行时扩展:
%%
文字“%”。
%C
%l%h%p%r 的散列。
%d
本地用户的主目录。
%F
服务器主机密钥的指纹。
%H
正在使用的 known_hosts 主机名或地址 搜索。
%H
远程主机名。
%一世
描述原因的字符串 KnownHostsCommand
执行:要么 ADDRESS
按地址查找主机时(仅 什么时候 CheckHostIP
已启用), HOSTNAME
按主机名搜索时,或 ORDER
准备主机密钥算法时 用于目标主机的首选项列表。
%一世
本地用户 ID。
%K
base64 编码的主机密钥。
%k
主机密钥别名(如果指定),否则为原始远程主机名 在命令行中给出。
%L
本地主机名。
%l
本地主机名,包括域名。
%n
命令行上给出的原始远程主机名。
%p
远程端口。
%r
远程用户名。
%T
本地 tun(4) 或 tap(4) 分配的 网络接口,如果 请求隧道转发,否则为“NONE”。
%t
服务器主机密钥的类型,例如 ssh-ed25519
%你
本地用户名。
CertificateFile
, ControlPath
, IdentityAgent
, IdentityFile
, KnownHostsCommand
, LocalForward
, Match exec
, RemoteCommand
, RemoteForward
, 和 UserKnownHostsFile
接受令牌 %%, %C, %d, %h, %i、%k、%L、%l、%n、%p、%r 和 %u。
KnownHostsCommand
另外接受 标记 %f、%H、%I、%K 和 %t。
Hostname
接受令牌 %% 和 %h。
LocalCommand
接受所有令牌。
ProxyCommand
接受令牌 %%, %h, %n、%p 和 %r。
环境 变量
某些关键字的参数可以在运行时扩展为 通过将它们包含在客户端上的环境变量 ${}
, 例如 ${HOME}/.ssh
将引用用户的 .ssh 目录。 如果指定的环境变量不存在则报错 将被返回并且该关键字的设置将被忽略。
关键词 CertificateFile
, ControlPath
, IdentityAgent
, IdentityFile
, KnownHostsCommand
, 和 UserKnownHostsFile
支持环境变量。 关键词 LocalForward
和 RemoteForward
仅支持环境变量 Unix 域套接字路径。
档案
~/.ssh/config
这是每个用户的配置文件。 这个文件的格式是 如上所述。 该文件由 SSH 客户端使用。 由于 可能被滥用,此文件必须具有严格的权限:读/写 供用户使用,其他人不可写。
/etc/ssh/ssh_config
系统范围的配置文件。 此文件为那些提供默认值 用户配置文件中未指定的值,以及 那些没有配置文件的用户。 这个文件必须是 世界可读。