1、命令行选项
2、用户的配置文件(~/. ssh/config)
3、系统范围的配置文件(/etc/ssh/ssh _ config)
除非另有说明,对于每个参数,将使用第一个获得的值。配置文件包含由 Host 规范分隔的部分,该部分仅应用于与规范中给出的模式之一匹配的主机。匹配的主机名通常是命令行中给出的名称(请参阅 CanonicalizeHostname 选项以了解异常情况)。
由于使用了每个参数的第一个获得的值,因此应该在文件的开头附近给出更多特定于主机的声明,在文件的结尾给出一般默认值。
该文件包含关键字参数对,每行一个。以“ #”开头的行和空行被解释为注释。参数可以选择用双引号(“)括起来,以表示包含空格的参数。配置选项可以用空格或可选的空格分隔,并且只有一个“ =”; 后一种格式对于避免在使用 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,则在同一传递过程中启用规范匹配和最终匹配。
Exec 关键字在用户的 shell 下执行指定的命令。如果该命令返回零退出状态,则认为该条件为 true。必须引用包含空格字符的命令。要执行的参数接受 TOKENS 部分中描述的令牌。
其他关键字的条件必须是单个条目或逗号分隔的列表,并且可以使用 PATTERNS 部分中描述的通配符和否定运算符。在使用 Hostname 或 CanonicalizeHostname 选项进行任何替换之后,host 关键字的条件与目标主机名匹配。由于在命令行中指定了主机名,所以 Origalhost 关键字与主机名匹配。User 关键字与远程主机上的目标用户名匹配。Localuser 关键字与运行 ssh (1)的本地用户的名称匹配(这个关键字在系统范围的 ssh _ config 文件中可能很有用)。
指定是否应将键自动添加到正在运行的 ssh-agent (1)中。如果将此选项设置为 yes 并从文件中加载密钥,则该密钥及其密码短语将被添加到具有默认生存期的代理中,就像通过 ssh-add (1)一样。如果将此选项设置为询问,则在添加密钥之前,SSH (1)将需要使用 SSH _ ASKPASS 程序进行确认(有关详细信息,请参阅 SSH-add (1))。如果将此选项设置为確,则必须确认密钥的每次使用,就像为 ssh-add (1)指定了-c 选项一样。如果此选项设置为 no,则不向代理添加任何密钥。或者,可以使用 sshd _ config (5)的 TIME FORMATS 部分中描述的格式将此选项指定为一个时间间隔,以指定 ssh-agent (1)中密钥的生存期,在此之后将自动删除该密钥。参数必须是 no (默认值) ,yes (可以选择后跟一个时间间隔) ,ask 或一个时间间隔。
指定连接时使用哪个地址族。有效参数可以是任何(默认值)、 inet (仅使用 IPv4)或 inet6(仅使用 IPv6)。
如果设置为 yes,则禁用诸如密码提示和主机密钥确认请求之类的用户交互。此选项在脚本和其他批处理作业中非常有用,这些作业中没有用户与 ssh (1)交互。参数必须是 yes 或 no (默认值)。
使用本地计算机上的指定地址作为连接的源地址。只有在有多个地址的系统上才有用。
使用本地计算机上指定接口的地址作为连接的源地址。
启用 CanonicalizeHostname 时,此选项指定要在其中搜索指定目标主机的域后缀列表。
指定当主机名规范化失败时是否失败并出现错误。默认情况下,是的,将尝试使用系统解析器的搜索规则查找不合格的主机名。如果启用了 CanonicalizeHostname,并且在 CanonicalDomains 指定的任何域中都找不到目标主机名,则 no 值将导致 ssh (1)立即失败。
控制是否执行显式主机名规范化, no
,不执行任何名称重写,并让系统解析器处理所有主机名查找。如果设置为
yes 然后,对于不使用 ProxyCommand 或者 ProxyJump, Ssh (1) 将尝试规范化命令行上指定的主机名 CanonicalDomains 后缀和 CanonicalizePermittedCNAMEs 规则,如果 CanonicalizeHostname 被设置为 always,然后规范化也应用于代理连接。
如果启用此选项,则使用新的目标名称再次处理配置文件,以在匹配的 Host 和 Match 节中获取任何新配置。如果值为 none,则禁用使用代理跳转主机。
指定禁用规范化之前主机名中的最大点字符数。默认值1允许一个点(即 hostname.subdomain)。
指定规则,以确定在规范化主机名时是否应遵循 CNAME。规则由一个或多个
Source _ domain _ list 源 _ 域 _ 列表:Target _ domain _ list,在哪里 Source _ domain _ list 源 _ 域 _ 列表 是在规范化过程中可能遵循 CNAME 的域的模式列表,以及 Target _ domain _ list 是它们可能解析到的域的模式列表。
例如,“ * . a.example.com: * . b.example.com,* . c.example.com”将允许匹配“ * . a.example.com”的主机名被规范化为“ * . b.example.com”或“ * . c.example.com”域中的名称。
一个“ none”参数将导致不考虑 CNAME 进行规范化。这是默认行为。
指定允许使用哪些算法对证书进行签名 证书颁发机构(CA)。默认值是:
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)将不接受使用指定算法以外的算法签名的主机证书。
指定从中读取用户证书的文件 必须分别提供相应的私钥才能使用此 证明书
IdentityFile 指令 或者 -i 旗帜 � Ssh (1),通过 � Ssh-agent (1)或通过一个 PKCS11Provider 或者 � SecurityKeyProvider.
CericateFile 的参数可以使用波浪形语法来引用用户的主目录、 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。
可以在配置文件中指定多个证书文件; 将按顺序尝试这些证书。多个证书文件指令将添加到用于身份验证的证书列表中。
如果设置为 yes,ssh (1)将额外检查 known _ hosts 文件中的主机 IP 地址。这允许它检测主机密钥是否由于 DNS 欺骗而更改,并将目标主机的地址添加到 ~/。Ssh/known _ hosts,而不管 StrictHostKeyChecking 的设置如何。如果选项设置为 no (默认值) ,则不执行检查。
指定允许的密码及其首选项的顺序 密码必须以逗号分隔。如果指定的列表以 字符,则将附加指定的密码 而不是替换它们。如果指定的列表开始 使用“-”字符,则指定的密码(包括 将从默认集中移除而不是替换它们。 如果指定的列表以“ ^”字符开头,则 指定的密码将放置在默认集的头部。 �
支援的密码包括:
3des-cbc
128-cbc
192-cbc
256-cbc
128-ctr
192-ctr
256-ctr
Es128-gcm@openssh.com
Es256-gcm@openssh.com
Chacha20-poly1305@openssh.com
默认值是:
电子邮件: chacha20-poly1305@openssh.com,
128-ctr,192-ctr,256-ctr,
es128-gcm@openssh.com,es256-gcm@openssh.com
也可以使用“ ssh-Q 密码”获得可用密码的列表。
指定清除配置文件或命令行中指定的所有本地、远程和动态端口转发。当从 ssh (1)命令行使用该选项来清除配置文件中设置的端口转发时,该选项非常有用,并且由 scp (1)和 sftp (1)自动设置。参数必须是 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)转发,但是转发的显示和代理将属于主连接,即不可能转发多个显示或代理。
另外还有两个选项允许机会多路复用: 尝试使用主连接,但是如果还没有主连接,就回过头来创建一个新连接。这些选项是: 自动和自动请求。后者与询问选项一样需要确认。
指定用于连接共享的控制套接字的路径,如上面 ControlMaster 部分所述,或指定禁用连接共享的字符串 none。ControlPath 的参数可以使用波浪形语法来引用用户的主目录、 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。建议用于机会连接共享的任何 ControlPath 至少包括% h、% p 和% r (或者% C) ,并放置在其他用户无法写入的目录中。这确保了共享连接的唯一标识。
与 ControlMaster 一起使用时,指定在初始客户端连接关闭后,主连接应在后台保持打开(等待将来的客户端连接)。如果设置为 no (默认值) ,那么主连接将不会放在后台,并且在初始客户端连接关闭时立即关闭。如果设置为 yes 或0,那么主连接将无限期地保留在后台(直到通过“ ssh-O 出口”等机制关闭或终止)。如果设置为以秒为单位的时间,或者以 sshd _ config (5)中记录的任何格式的时间,那么后台主连接将在指定时间内保持空闲(没有客户端连接)后自动终止。
指定将本地计算机上的 TCP 端口转发到 安全信道,然后使用应用程序协议确定 从远程计算机连接到哪里。 �
参数必须是[ bind _ address: ] port。IPv6地址可以通过将地址放在方括号中来指定。默认情况下,根据 GatewayPorts 设置绑定本地端口。但是,可以使用显式 bind _ address 将连接绑定到特定地址。Localhost 的 bind _ address 表示监听端口只为本地使用而绑定,而空地址或“ *”表示该端口应可从所有接口使用。
目前支持 SOCKS4和 SOCKS5协议,ssh (1)将充当 SOCKS 服务器。可以指定多个转发,并且可以在命令行上给出其他转发。只有超级用户可以转发特权端口。
为交互式会话启用 EscapeChar 菜单中的命令行选项(默认为‘ ~ C’)。默认情况下,禁用命令行。
在全局客户机配置文件/etc/ssh/ssh _ config 中将此选项设置为 yes,可以在 HostbasedAuthentication 期间使用辅助程序 ssh-keysign (8)。参数必须是 yes 或 no (默认值)。这个选项应该放在非主机特定的部分。有关更多信息,请参见 ssh-keysign (8)。
设置转义字符(默认值: ‘ ~’)。还可以在命令行上设置转义字符。参数应该是一个单独的字符,“ ^”后面跟一个字母,或者没有字符来完全禁用转义字符(使连接对于二进制数据是透明的)。
指定如果 ssh (1)不能设置所有请求的动态、隧道、本地和远程端口转发,是否应该终止连接(例如,如果任何一端都不能绑定和侦听指定的端口)。请注意,ExitOnForwardfalse 不适用于通过端口转发建立的连接,例如,如果到最终转发目标的 TCP 连接失败,也不会导致 ssh (1)退出。参数必须是 yes 或 no (默认值)。
指定显示密钥指纹时使用的哈希算法。有效选项为: md5和 sha256(默认值)。
请求 ssh 在命令执行之前转到后台 ssh
将要求密码或密码短语,但用户希望它在后台。这意味着
StdinNull
配置选项被设置为“是”。在远程站点启动 X11程序的推荐方法是
ssh -f host xterm,这是相同的 ssh host xterm 如果 ForkAfterAuthentication 配置选项设置为“是”。
如果 ExitOnForwardFalse 配置选项被设置为“ yes”,那么客户端启动时 ForkAfterAuthentication 配置选项被设置为“ yes”,那么客户端将等待所有远程端口转发成功建立,然后再将自己置于后台。这个关键字的参数必须是 yes (与-f 选项相同)或 no (默认值)。
指定是否将到身份验证代理的连接(如果有的话)转发到远程计算机。理由可能是
yes, no
(默认值) ,代理套接字的显式路径,或查找路径的环境变量的名称(以“ $”开头)。
代理转发应谨慎启用。能够绕过远程主机(代理的 Unix 域套接字)上的文件权限的用户可以通过转发连接访问本地代理。攻击者无法从代理获得密钥材料,但是他们可以对密钥执行操作,使他们能够使用加载到代理中的标识进行身份验证。
指定是否将 X11连接自动重定向到安全通道和 DISPLAY 论点必须是 yes 或者 no (默认值)。
X11转发应谨慎启用。具有绕过远程主机(用于用户的 X11授权数据库)的文件权限的用户可以通过转发连接访问本地 X11显示。如果也启用了 ForwardX11Trusted 选项,那么攻击者就可以执行诸如击键监视之类的活动。
使用 sshd _ config (5)的 TIME FORMATS 部分中描述的格式为不受信任的 X11转发指定超时。此时以后 ssh (1)接收到的 X11连接将被拒绝。将 ForwardX11Timeout 设置为零将禁用超时并允许 X11在连接生命周期内进行转发。默认情况下,在20分钟后禁用不受信任的 X11转发。
如果此选项设置为 yes,远程 X11客户端将完全访问原始 X11显示器。
如果此选项设置为 no (默认值) ,则远程 X11客户端将被视为不受信任,并防止窃取或篡改属于受信任的 X11客户端的数据。此外,用于会话的 xauth (1)令牌将在20分钟后过期。此后将拒绝远程客户端访问。
请参阅 X11SECURITY 扩展规范,了解对不可信客户机施加的限制的详细信息。
指定是否允许远程主机连接到本地转发端口。默认情况下,ssh (1)将本地端口转发绑定到环回地址。这将防止其他远程主机连接到转发端口。GatewayPorts 可以用来指定 ssh 应该将本地端口转发绑定到通配符地址,从而允许远程主机连接到转发端口。参数必须是 yes 或 no (默认值)。
指定要用于全局主机密钥数据库的一个或多个文件,以空格分隔。默认值是/etc/ssh/ssh _ known _ hosts,/etc/ssh/ssh _ known _ hosts2。
指定是否允许基于 GSSAPI 的用户身份验证。默认值为 no。
GSSAPIDelegateCredentials
将(委托)凭据转发到服务器。默认值为 no。
指示 ssh (1)应该在将主机名和地址添加到 ~/时散列它们。Ssh/known _ hosts.Ssh (1)和 sshd (8)通常可以使用这些散列名称,但是如果文件的内容被公开,它们就不会直观地显示标识信息。默认值是否定的。注意,已知主机文件中的现有名称和地址不会自动转换,但可以使用 ssh-keygen (1)手动散列。
HostbasedAcceptedAlgorithms
将用于基于主机的身份验证的签名算法指定为以逗号分隔的模式列表。或者,如果指定的列表以“ +”字符开头,那么指定的签名算法将附加到默认集,而不是替换它们。如果指定的列表以“-”字符开头,那么指定的签名算法(包括通配符)将从默认集中删除,而不是替换它们。如果指定的列表以“ ^”字符开头,那么指定的签名算法将放在默认集的前面。这个选项的默认值是:
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-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)的-Q 选项可用于列出受支持的签名算法。
指定是否尝试使用公共密钥认证的基于 rhosts 的身份验证。参数必须为 yes 或 no (默认值)。
HostKeyAlgorithms
指定客户端希望按照首选项顺序使用的主机密钥签名算法。或者,如果指定的列表以“ +”字符开头,那么指定的签名算法将附加到默认集,而不是替换它们。如果指定的列表以“-”字符开头,那么指定的签名算法(包括通配符)将从默认集中删除,而不是替换它们。如果指定的列表以“ ^”字符开头,那么指定的签名算法将放在默认集的前面。这个选项的默认值是:
19-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-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-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-Q HostKey 算法”获得。
指定在查找或保存主机密钥数据库文件中的主机密钥以及验证主机证书时应使用的别名,而不是真正的主机名。此选项对于隧道 SSH 连接或在单个主机上运行的多个服务器非常有用。
指定要登录的实际主机名。这可用于指定主机的昵称或缩写。Hostname 的参数接受 TOKENS 部分中描述的令牌。还允许使用数字 IP 地址(在命令行和主机名规范中)。默认值是命令行中给定的名称。
指定即使 ssh-agent (1)或 PKCS11Provider 或 SecurityKeyProvider 提供更多标识,ssh (1)也应该只使用配置的身份验证标识和证书文件(默认文件,或者在 ssh _ config 文件中显式配置的文件,或者在 ssh (1)命令行上传递的文件)。这个关键字的参数必须是 yes 或 no (默认值)。此选项适用于 ssh-agent 提供许多不同身份的情况。
指定 UNIX- 用于与认证代理通信的域套接字。
此选项覆盖 SSH _ AUTH _ SOCK 环境变量,可用于选择特定的代理。将套接字名称设置为 no 将禁用身份验证代理的使用。如果指定了字符串“ SSH _ AUTH _ SOCK”,套接字的位置将从 SSH _ AUTH _ SOCK 环境变量读取。否则,如果指定的值以“ $”字符开头,那么它将被视为一个包含套接字位置的环境变量。
IdentityAgent 的参数可以使用波浪形语法来引用用户的主目录、 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。
指定从中读取用户的 DSA、 ECDSA、身份验证器托管的 ECDSA、 Ed25519、身份验证器托管的 ed25519或 RSA 身份验证标识的文件。您还可以指定一个公钥文件来使用加载到其中的相应私钥
Ssh-agent (1) 当私钥文件不在本地时。默认值为 ~/. ssh/id _ rsa, ~/. ssh/id _ ecdsa, ~/. ssh/id _ ecdsa _ sk, ~/. ssh/id _ ed25519, ~/. ssh/id _ ed25519 _ sk 还有 ~/. ssh/id _ dsa�.此外,身份验证代理表示的任何身份都将用于身份验证,除非 IdentitiesOnly 如果没有显式指定任何证书,则 CertificateFile, Ssh (1) 将尝试从通过附加 当然,酒吧 到指定的 IdentityFile.
IdentityFile 的参数可以使用波浪形语法来引用用户的主目录或 TOKENS 部分中描述的令牌。
可以在配置文件中指定多个标识文件; 将按顺序尝试所有这些标识。多个 IdentityFile 指令将添加到已尝试的标识列表中(此行为不同于其他配置指令的行为)。
IdentityFile 可以与 IdentitiesOnly 结合使用,以选择在身份验证期间提供代理中的哪些身份。IdentityFile 还可以与 CericateFile 一起使用,以提供使用标识进行身份验证所需的任何证书。
指定在配置解析中遇到未知选项时要忽略的未知选项的模式列表。如果 ssh _ config 包含 ssh (1)无法识别的选项,则可以使用这种方法来抑制错误。建议在配置文件的早期列出 IgnoreUnknown,因为它不会应用于出现在它之前的未知选项。
包括指定的配置文件。可以指定多个路径名,每个路径名可以包含 globb (7)通配符,对于用户配置,类似 shell 的“ ~”引用指向用户主目录。通配符将按照词法顺序展开和处理。假设没有绝对路径的文件位于 ~/。Ssh (如果包含在用户配置文件中)或/etc/ssh (如果包含在系统配置文件中)。头文件可以出现在 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,lowlate,吞吐量,可靠性,数值,或没有使用操作系统默认值。此选项可以采用一个或两个参数,用空格分隔。如果指定了一个参数,则无条件地将其用作数据包类。如果指定了两个值,则自动为交互式会话选择第一个值,为非交互式会话选择第二个值。交互式会话的默认值为 af21(低延迟数据) ,非交互式会话的默认值为 cs1(较低的工作量)。
指定是否使用键盘交互式身份验证。此关键字的参数必须是 yes (默认值)或 no。ChallengeResponseAuthentication 是此。
指定在键盘交互式身份验证中要使用的方法的列表。多个方法名称必须以逗号分隔。默认情况下使用服务器指定的列表。可用的方法根据服务器支持的内容而有所不同。对于 OpenSSH 服务器,它可能是0或更多的: bsdauth、 pam 和 skey。
指定可用的 KEX (密钥交换)算法。多个算法必须以逗号分隔。如果指定的列表以“ +”字符开头,那么指定的算法将被附加到默认集,而不是替换它们。如果指定的列表以“-”字符开头,那么指定的算法(包括通配符)将从默认集中删除,而不是替换它们。如果指定的列表以“ ^”字符开头,那么指定的算法将放在默认集的前面。默认值是:
Sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,defie-hellman-group-exchange-sha256,defie-hellman-group16-sha512,defie-hellman-group18-sha512,defie-hellman-group14-sha256
也可以使用“ ssh-Q kex”获得可用的密钥交换算法列表。
指定用于获取主机密钥列表的命令,以及 UserKnownHostsFile 和 GlobalKnownHostsFile 中列出的命令。这个命令在读取文件之后执行。它可以将主机密钥行以与通常文件相同的格式写入标准输出(在 ssh (1)中的 VERIFYING HOST KEYS 部分中进行了描述)。KnownHostsCommand 的参数接受 TOKENS 部分中描述的令牌。每个连接可以多次调用该命令: 一次是在准备要使用的主机密钥算法的首选项列表时,另一次是为了获得所请求的主机名的主机密钥,如果启用 CheckHostIP,再一次是为了获得与服务器地址相匹配的主机密钥。如果命令不正常退出或返回非零退出状态,则连接终止。
指定成功后在本地计算机上执行的命令 连接到服务器。命令字符串扩展到 行,并使用用户的 shell 执行 �
LocalCommand 接受 � 代币 部分。 �
该命令同步运行,不能访问产生它的 ssh (1)的会话。它不应该用于交互式命令。
除非启用了 PermitLocalCommand,否则将忽略此指令。
指定将本地计算机上的 TCP 端口转发到 保护从远程计算机到指定主机和端口的通道 第一个参数指定侦听器,并且可以是 [
Bind _ address:]左舷 或者 Unix 域套接字路径。第二个参数是目标,可以是 � 主持人:机场 或 Unix 域名 套接字路径,如果远程主机支持它。 �
IPv6地址可以通过将地址放在方括号中来指定。可以指定多个转发,并且可以在命令行上给出其他转发。只有超级用户可以转发特权端口。默认情况下,根据 GatewayPorts 设置绑定本地端口。但是,可以使用显式 bind _ address 将连接绑定到特定地址。Localhost 的 bind _ address 表示监听端口只为本地使用而绑定,而空地址或“ *”表示该端口应可从所有接口使用。Unix domain socket 路径可以使用 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。
给出从 ssh (1)记录消息时使用的详细级别。可能的值是: QUIEET、 FATAL、 ERROR、 INFO、 VERBOSE、 DEBUG、 DEBUG1、 DEBUG2和 DEBUG3。默认值是 INFO。DEBUG 和 DEBUG1是等价的。DEBUG2和 DEBUG3分别指定更高级别的详细输出。
指定一个或多个对 LogLevel 的重写 与源文件、函数和行号匹配的 强制进行详细的日志记录。例如,重写模式为: �
C: * : 1000,* : kex _ exchange _ Identity () : * ,packet.c: *
将为 kex.c 的第1000行、 kex _ exchange _ Identity ()函数中的所有内容以及 packet.c 文件中的所有代码启用详细的日志记录。此选项用于调试,默认情况下不启用重写。
按照优先顺序指定 MAC (讯息鑑别码)算法。MAC 算法用于数据完整性保护。多个算法必须以逗号分隔。如果指定的列表以“ +”字符开头,那么指定的算法将被附加到默认集,而不是替换它们。如果指定的列表以“-”字符开头,那么指定的算法(包括通配符)将从默认集中删除,而不是替换它们。如果指定的列表以“ ^”字符开头,那么指定的算法将放在默认集的前面。
包含“-etm”的算法在加密后计算 MAC (然后加密 MAC)。这些算法被认为更安全,建议使用。
默认值是:
[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,[email protected],hmac-sha2-512,[email protected],hmac-sha2-512,hmac-sha1,[email protected],hmac-sha2-512,hmac
可用的 MAC 算法列表也可以使用“ ssh-Q MAC”获得。
禁用 localhost 的主机身份验证(环回地址)。此关键字的参数必须是 yes 或 no (默认值)。
指定放弃之前的密码提示数。此关键字的参数必须是整数。默认值是3。
指定是否使用密码身份验证。此关键字的参数必须是 yes (默认值)或 no。
允许通过 LocalCommand 选项或使用!Ssh (1)中的命令转义序列。参数必须是 yes 或 no (默认值)。
指定远程 TCP 端口转发到的目的地 允许的时间 RemoteForward
用作袜子 转发说明书必须是下列表格之一: �
PermitRemoteOpen 主机: 端口
PermitRemoteOpen IPv4 _ addr: port
PermitRemoteOpen [ IPv6 _ addr ] : port
可以通过使用空格分隔它们来指定多个转发。可以使用 any 参数来消除所有限制并允许任何转发请求。无参数可用于禁止所有转发请求。通配符‘ *’可用于主机或端口,以分别允许所有主机或端口。否则,不会对提供的名称执行模式匹配或地址查找。
指定要使用哪个 PKCS # 11提供程序或不使用任何提供程序以指示不应使用提供程序(默认情况下)。这个关键字的参数是到 PKCS # 11共享库 ssh (1)的路径,ssh (1)应该使用这个路径与提供用户身份验证密钥的 PKCS # 11令牌通信。
指定要在远程主机上连接的端口号。默认为22。
指定客户端尝试身份验证方法的顺序。这允许客户端选择一种方法(例如。
keyboard-interactive). password) ,默认值为:
Gssapi-with-mic,主机为基础,公钥,键盘交互,密码
指定用于连接到服务器的命令。命令字符串扩展到行尾,并使用用户的 shell’执行
exec指令来避免延迟的 shell 进程。
ProxyCommand 的参数接受 TOKENS 部分中描述的令牌。该命令基本上可以是任何内容,并且应该从其标准输入读取并写入到其标准输出。它最终应该连接某台机器上运行的 sshd (8)服务器,或者在某处执行 sshd-i。主机密钥管理将使用所连接的主机的主机名(默认为用户键入的名称)来完成。将命令设置为 none 将完全禁用此选项。请注意,CheckHostIP 不适用于使用代理命令进行连接。
本指令与 nc (1)及其代理支持结合使用非常有用。例如,下面的指令将通过 HTTP 代理连接到192.0.2.0:
ProxyCommand/usr/bin/nc-X connect-x 192.0.2.0:8080% h% p
Specifies one or more jump proxies as either [user@]host[:port] or an ssh URI. Multiple proxies may be separated by comma characters and will be visited sequentially. Setting this option will cause ssh(1) to connect to the target host by first making a ssh(1) connection to the specified ProxyJump host and then establishing a TCP forwarding to the ultimate target from there. Setting the host to none disables this option entirely.
Note that this option will compete with the ProxyCommand option - whichever is specified first will prevent later instances of the other from taking effect.
Note also that the configuration for the destination host (either supplied via the command-line or the configuration file) is not generally applied to jump hosts. ~/.ssh/config should be used if specific configuration is required for jump hosts.
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.
Specifies the signature algorithms that will be used for public key authentication as a comma-separated list of patterns. If the specified list begins with a ‘+’ character, then the algorithms after it will be appended to the default instead of replacing it. If the specified list begins with a ‘-’ character, then the specified algorithms (including wildcards) will be removed from the default set instead of replacing them. If the specified list begins with a ‘^’ character, then the specified algorithms will be placed at the head of the default set. The default for this option is:
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-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-QPubkeyAccepted”获得。
指定是否尝试公共密钥认证。这个关键字的参数必须是 yes (默认值)、 no、 unbound 或 host-bound。最后两个选项启用公共密钥认证,同时分别禁用或启用受限 ssh-agent (1)转发所需的 OpenSSH 主机绑定身份验证协议扩展。
指定在重新协商会话密钥之前可以传输或接收的最大数据量,还可以选择在重新协商会话密钥之前可以传递或接收的最大时间量。第一个参数以字节为单位指定,后缀可以是‘ K’、‘ M’或‘ G’,分别表示千字节、兆字节或千兆字节。默认值在“1G”和“4G”之间,这取决于密码。可选的第二个值以秒为单位,可以使用 sshd _ config (5)的 TIME FORMATS 部分中记录的任何单元。RekeyLimit 的默认值为 default none,这意味着在发送或接收密码的默认数据量之后执行密钥更新,不执行基于时间的密钥更新。
指定在成功连接到服务器后要在远程计算机上执行的命令。命令字符串扩展到行尾,并使用用户的 shell 执行。RemoteCommand 的参数接受 TOKENS 部分中描述的令牌。
指定将远程计算机上的 TCP 端口转发到 远程端口可以转发到指定的 主机和端口从本地机器,或可以作为一个 SOCKS 4/5代理,即 允许远程客户端从本地连接到任意目标 第一个论点是听力规范,可以是 [
Bind _ address:]左舷
或者,如果 远程主机支持 Unix domain socket 路径 那么第二个参数必须是 �
主持人:机场
或 Unix 域名 套接字路径,否则,如果未指定目标参数,则 远程转发将作为 SOCKS 代理建立 SOCKS 代理,连接的目的地可以通过 �
PermitRemoteOpen.
IPv6地址可以通过将地址放在方括号中来指定。可以指定多个转发,并且可以在命令行上给出其他转发。只有以 root 身份在远程计算机上登录时,才能转发特权端口。Unix domain socket 路径可以使用 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。
如果 port 参数为0,侦听端口将在服务器上动态分配,并在运行时报告给客户机。
如果没有指定 bind _ address,则默认情况下只绑定到环回地址。如果 bind _ address 是“ *”或空字符串,则请求转发监听所有接口。只有在启用服务器的 GatewayPorts 选项时,指定远程 bind _ address 才会成功(请参见 sshd _ config (5))。
指定是否为会话请求伪 tty。争论的焦点可能是: no (永远不要请求一个 TTY) ,yes (当标准输入是 TTY 时总是请求一个 TTY) ,force (总是请求一个 TTY)或 auto (打开登录会话时请求一个 TTY)。此选项镜像 ssh (1)的-t 和-T 标志。
指定 ssh (1)将接受的最小 RSA 密钥大小(位)。小于此限制的用户身份验证密钥将被忽略。呈现小于此限制的主机密钥的服务器将导致连接终止。默认值是1024位。注意,此限制只能从默认值引发。
指定已撤销的主机公钥。对于主机身份验证,将拒绝此文件中列出的密钥。请注意,如果此文件不存在或不可读,则将拒绝所有主机的主机身份验证。密钥可以指定为文本文件,每行列出一个公钥,或者 ssh-keygen (1)生成的 OpenSSH 密钥撤销列表(KRL)。有关 KRL 的更多信息,请参见 ssh-keygen (1)中的 KEY REVOCATION LISTS 部分。RevokedHostKeys 的参数可以使用波浪形语法来引用用户的主目录、 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。
指定库的路径,该路径将在加载任何 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 (shell 或命令执行)。
直接指定一个或多个要发送到服务器的环境变量及其内容。与 SendEnv 类似,除了 TERM 变量之外,服务器必须准备好接受环境变量。
从/dev/null 重定向 stdin (实际上,防止从 stdin 读取)。在后台运行 ssh 时,必须使用此选项或等效的-n 选项。这个关键字的参数必须是 yes (与 -n 选项相同)或 no (默认值)。
设置创建本地或远程端口转发的 Unix 域套接字文件时使用的八进制文件创建模式掩码(umask)。此选项仅用于端口转发到 Unix 域套接字文件。
默认值是0177,它创建一个 Unix 域套接字文件,该文件只能由所有者读写。注意,并非所有操作系统都遵循 Unix 域套接字文件的文件模式。
指定在创建新的 Unix 域套接字文件之前,是否为本地端口转发或远程端口转发删除现有的 Unix 域套接字文件。如果套接字文件已经存在并且
StreamLocalBindUnlink 未启用, ssh
将无法将端口转发到 Unix 域套接字文件。此选项仅用于端口转发到 Unix 域套接字文件。
参数必须是 yes 或 no (默认值)。
如果此标志设置为 yes, Ssh (1) 将永远不会自动将主机密钥添加到 ~/. ssh/known _ hosts
文件,并拒绝连接到其主机密钥已更改的主机。这提供了对中间人(MITM)攻击的最大保护,尽管当
/etc/ssh/ssh _ known _ hosts
文件维护不善,或者经常与新主机建立连接。此选项强制用户手动添加所有新主机。
如果这个标志被设置为接受-new,那么 ssh 将自动向用户的 known _ hosts 文件添加新的主机密钥,但是不允许用已更改的主机密钥连接到主机。如果将此标志设置为 no 或 off,ssh 将自动向用户已知的主机文件添加新的主机密钥,并允许继续连接到更改了主机密钥的主机,但受到一些限制。如果这个标志被设置为询问(默认情况下) ,只有在用户确认他们真正想要做的事情之后,新的主机密钥才会被添加到用户已知的主机文件中,ssh 将拒绝连接到主机密钥已经更改的主机。已知主机的主机密钥将在所有情况下自动验证。
给出从 ssh (1)记录消息时使用的工具代码。可能的值是: DAEMON、 USER、 AUTH、 LOCAL0、 LOCAL1、 LOCAL2、 LOCAL3、 LOCAL4、 LOCAL5、 LOCAL6、 LOCAL7。默认值是 USER。
指定系统是否应向另一端发送 TCP 保留消息。如果他们发送,死亡的连接或崩溃的其中一台机器将被适当地注意到。然而,这意味着如果路由暂时关闭,连接就会中断,有些人会觉得这很烦人。
默认值为 yes (用于发送 TCP 保存消息) ,客户端将注意到网络是否停止运行或远程主机死亡。这在脚本中很重要,许多用户也希望如此。
若要禁用 TCP 保留活动消息,应将该值设置为 no。
请求 tun (4)设备在客户端和服务器之间的转发。参数必须是 yes、 point-to-point (第3层)、 Ethernet (第2层)或 no (默认值)。指定 yes 将请求默认的隧道模式,即点对点模式。
TunnelDevice
指定 屯(4) 在客户端上打开的设备(本地人)及伺服器(遥控开关).
参数必须是 local _ tun [ : remote _ tun ]。这些设备可以通过数字 ID 或关键字 any 指定,这些关键字使用下一个可用的隧道设备。如果没有指定 remote _ tun,则默认为 any。默认值为 any: any。
指定是否 Ssh (1)
应该接受身份验证完成后从服务器发送的其他主机密钥通知,并将它们添加到
UserKnownHostsFile。争论必须是 yes, no 或者 � ask
。此选项允许学习替代 服务器的主机密钥,并通过允许 服务器在删除旧的公钥之前发送替换的公钥。 �
只有当用于验证主机的密钥已经被用户信任或明确接受,主机通过 UserKnownHostsFile (即不是 GlobalKnownHostsFile)进行验证,并且主机使用普通密钥而不是证书进行验证时,才能接受其他主机密钥。
如果用户没有覆盖默认的 UserKnownHostsFile 设置并且没有启用 VerifyHostKeyDNS,则默认情况下启用 UpdateHostKeys,否则 UpdateHostKeys 将设置为 no。
如果将 UpdateHostKeys 设置为询问,则会要求用户确认对 known _ hosts 文件的修改。确认目前与 ControlPerst 不兼容,如果启用,将禁用它。
目前,只有来自 OpenSSH 6.8的 sshd (8)和更大的支持“ [email protected]”协议扩展,该扩展用于通知客户端所有服务器的主机密钥。
指定要作为。当在不同的计算机上使用不同的用户名时,这可能很有用。这样就省去了在命令行中提供用户名的麻烦。
指定用于用户主机密钥数据库的一个或多个文件,以空格分隔。每个文件名可以使用波浪表示法来引用用户的主目录、 TOKENS 部分中描述的令牌和 ENVIRONMENT VARIABLES 部分中描述的环境变量。如果没有值,ssh (1)将忽略任何特定于用户的已知主机文件。默认值是 ~/。Ssh/known _ hosts,~/.Ssh/known _ hosts2.
指定是否使用 DNS 和 SSHFP 资源记录验证远程密钥。如果此选项设置为
yes
,客户端将隐式信任与 DNS 的安全指纹匹配的密钥。不安全的指纹将被处理,就像这个选项被设置为
ask。如果此选项设置为 ask
,则会显示指纹匹配的资料,但使用者仍须根据
StrictHostKeyChecking 选项。默认值是 no.
另请参见在 ssh (1)中验证主机密钥。
如果此标志设置为 yes,则除了登录时的指纹字符串以及未知主机密钥外,还将打印远程主机密钥指纹的 ASCII 艺术表示形式。如果这个标志被设置为 no (默认值) ,那么在登录时不会打印指纹字符串,只会打印未知主机密钥的指纹字符串。
指定 xauth (1)程序的完整路径名。默认值是/usr/X11R6/bin/xauth。
模式由零个或多个非空白字符、‘ *’(匹配零个或多个字符的通配符)或‘ ?’组成(完全匹配一个字符的通配符)。中的任何主机指定一组声明。“ co.uk”域名集合,可使用以下模式:
Host * . co.uk 主持人 * . co.uk
以下模式将匹配192.168.0. [0-9]网络范围内的任何主机:
主机192.168.0?
模式列表是以逗号分隔的模式列表。模式列表中的模式可以在前面加上一个叹号(’!).例如,为了允许在组织中的任何地方使用某个密钥,除了“拨号”池之外,可以使用以下条目(在 Authored_ keys 中) :
来自 = “ ! * . dialup.example.com ,* . example.com”
请注意,否定的匹配本身绝不会产生正结果。例如,尝试将“ host3”与下面的模式列表匹配将会失败:
From = “ ! host1,! host2”
这里的解决方案是包含一个将产生正匹配的术语,比如通配符:
From = “ ! host1,! host2,*”
某些关键字的参数可以使用在运行时展开的标记:
%%
字面上的“%”。
% C
% l% h% p% r 的散列。
% d
本地用户的主目录。
% f
服务器主机密钥的指纹。
% H
正在搜索的 known _ hosts 主机名或地址。
% h
远程主机名。
% I
描述执行 KnownHostsCommand 的原因的字符串: 按地址查找主机时的 ADDRESS (只有在启用 CheckHostIP 时) ,按主机名查找时的 HOSTNAME,或准备用于目标主机的主机密钥算法首选项列表时的 ORDER。
% i
本地用户 ID。
% K
Base64编码的主机密钥。
% k
如果指定了主机密钥别名,则为命令行上指定的原始远程主机名。
% L
本地主机名。
% l
本地主机名,包括域名。
% n
命令行中给出的原始远程主机名。
% p
远程端口。
% r
远程用户名。
% T
如果请求隧道转发,则指定的本地转发(4)或点击(4)网络接口,否则为“ NONE”。
% t
服务器主机密钥的类型,例如 ssh-ed25519。
% u
本地用户名。
CericateFile、 ControlPath、 IdentityAgent、 IdentityFile、 KnownHostsCommand、 LocalForward、 Match exec、 RemoteCommand、 RemoteForward、 RevokedHostKeys 和 UserKnownHostsFile 接受标记%% 、% C、% d、% h、% i、% k、% L、% l、% n、% p、% r 和% u。
KnownHostsCommand 还接受令牌% f、% H、% I、% K 和% t。
主机名接受标记%% 和% h。
LocalCommand 接受所有令牌。
ProxyCommand 和 ProxyJump 接受令牌%% 、% h、% n、% p 和% r。
可以在运行时从客户机上的环境变量扩展某些关键字的参数,方法是将它们封装在 ${}中,例如 ${ HOME }/。Ssh 将引用用户的。Ssh 目录。如果指定的环境变量不存在,那么将返回一个错误,并忽略该关键字的设置。
证书文件、控制路径、 IdentityAgent、 IdentityFile、 KnownHostsCommand 和 UserKnownHostsFile 等关键字支持环境变量。关键字 LocalForward 和 RemoteForward 只支持 Unix domain socket 路径的环境变量。
~/. ssh/config
这是每个用户的配置文件。该文件的格式如上所述。此文件由 SSH 客户端使用。由于存在滥用的可能性,此文件必须具有严格的权限: 用户的读/写权限,而其他用户不能写。
/etc/ssh/ssh _ config
系统范围的配置文件。此文件为那些未在用户的配置文件中指定的值以及那些没有配置文件的用户提供默认值。这个文件必须是世界可读的。