我有一个运行多个“SSH 守护进程”的服务器(实际上是 Stash 和 OpenSSH),每个需要不同的 SSH 密钥。这些守护进程正在侦听 2 个不同的端口。
在客户端的 SSH 配置中(特别是~/.ssh/config),是否可以在Host/Match指令(或其他方式)中指定端口,以便我可以覆盖IdentityFile基于端口的?这样ssh myserver -p 22,ssh myserver -p 23两者都将使用正确的密钥登录,无需额外配置。
Ken*_*ter 14
如果您的 ssh 客户端足够新,您可以使用 config fileMatch关键字根据目标端口进行条件配置。
Match host somehost exec "test %p = 42"
IdentityFile ...
Run Code Online (Sandbox Code Playgroud)
如果目标主机是“somehost”并且目标端口是 42,则上面的示例将仅应用“IdentityFile”行。 其Match工作Host方式如下(直到下一个 Match 或 Host 行)仅适用于匹配的会话标准。在示例中,Match 行检查主机是否为“somehost”,并且它还运行一个外部命令,如果该命令以状态 0 退出,则该命令被视为匹配。
这里运行的命令是test %p = 42. "%p" 将被 ssh 到那时使用的端口值替换(默认值 22 或命令行中的值)。test也被称为[; 它是一个命令行实用程序,主要在 shell 脚本中作为if语句的一部分使用。这里,test用于测试端口号是否为 42。
该Matchssh_config中的关键字加入到OpenSSH的6.5版本或6.6。检查您的ssh_config手册页,看看它是否在您的系统上可用。
您可以在文件中创建各种主机“别名” ~/.ssh/config,以引用同一服务器不同端口上的 SSH 守护程序。例如:
Host daemon1
HostName host.domain.com
Port 22
IdentityFile ~/.ssh/id_rsa_daemon1
Host daemon2
HostName host.domain.com
Port 23
IdentityFile ~/.ssh/id_rsa_daemon2
Run Code Online (Sandbox Code Playgroud)
然后您可以运行ssh daemon1或ssh daemon2登录特定的 SSH 守护程序。
| 归档时间: |
|
| 查看次数: |
4640 次 |
| 最近记录: |