在 .ssh/config 文件中
场景是我现在有两个公共 IP(动态),一个连接到 aws,一个连接到 rackspace
两者都需要不同的 pem 密钥才能连接。但我想使用 ssh 配置文件来节省时间
Host <ip1>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/aws.pem
Host <ip2>
User root
Port 22
HostName %h
IdentityFile ~/.ssh/rackspace.pem
从此设置中,我无法区分要使用哪个 pem 文件。我想利用主机作为参数的一部分来指定要连接的服务器,例如 ssh aws-ip1 ssh rack-ip2
然后配置文件可以区分使用哪个 pem 文件
有人知道怎么做吗?
答案1
好吧...这个问题很老了。但我能想到一种方法来解决这个问题。在这里使用通配符(*)和%h参数。
假设 Amazon 的 IP 为 10.10.20.*,Rackspace 的 IP 为 20.20.10.*。以下配置将有所帮助:
Host 10.10.20.*
Hostname %h
User root
IdentityFile ~/.ssh/aws.pem
Host 20.20.10.*
Hostname %h
User root
IdentityFile ~/.ssh/rackspace.pem
然后调用,比如说ssh 10.10.20.5
会调用类似的内容,这可能正是所需要的。ssh -i ~/.ssh/aws.pem [email protected]
答案2
“主机”部分是一种您可以使用的“快捷方式”:
Host aws-ip1
HostName ip-or-name-to-ip1
IdentityFile ~/.ssh/aws.pem
Host rack-ip2
HostName ip-or-name-to-ip2
IdentityFile ~/.ssh/rackspace.pem
然后你只需使用ssh aws-ip1
或ssh rack-ip2
...
引自man ssh-config
:
Host Restricts the following declarations (up to the next Host key-
word) to be only for those hosts that match one of the patterns
given after the keyword.
答案3
另一个选择是使用普通的老式 shell 别名:
alias ssh_rack="ssh -i .ssh/rackspace.pem"
alias ssh_aws="ssh -i .ssh/aws.pem"
然后使用它们代替ssh
。