![通过堡垒主机连接时可实现最少输入的 SSH 配置](https://linux22.com/image/183249/%E9%80%9A%E8%BF%87%E5%A0%A1%E5%9E%92%E4%B8%BB%E6%9C%BA%E8%BF%9E%E6%8E%A5%E6%97%B6%E5%8F%AF%E5%AE%9E%E7%8E%B0%E6%9C%80%E5%B0%91%E8%BE%93%E5%85%A5%E7%9A%84%20SSH%20%E9%85%8D%E7%BD%AE.png)
为了通过跳转代理(堡垒主机)连接到设备,我输入以下内容:
ssh -J bhost myuser@localhost -p $PORT
myuser
是我本地设备上当前登录用户的 usernanme 以及我在堡垒主机上连接的帐户。我设置了多个端口。
bhost
在我的 SSH .config 中定义如下:
Host bhost
HostName www.example.com
PasswordAuthentication no
IdentityFile ~/.ssh/id_ed25519
我的目标是不必打字myuser@localhost
。相反,我希望能够像这样登录:
ssh -J bhost -p $PORT
无论我使用的堡垒主机或端口myuser@localhost
总是相同的,所以我宁愿不必键入它。
答案1
您只需扩展~/.ssh/config
文件中的条目即可。也许像下面这样的东西会起作用。您需要尝试一下,因为我觉得您的问题并没有真正提供足够的信息。
.ssh\config
:
# this entry is the one you're trying to ssh to
Host example
Hostname www.example.com
ProxyJump bhost
# this entry is the bastion (jump) host
Host bhost
Hostname www.example.com
Port 8022
User myuser
IdentityFile ~/.ssh/id_ed25519
您实际上只是在其中设置两个不同的主机,.ssh/config
并通过命令告诉其中一个主机使用另一个主机ProxyJump
。
然后ssh example
您只需输入即可跳转到所需的目标机器。
答案2
答案的灵感来自蒂姆·肯尼迪。正如他所说,这可以通过 ~/.ssh/config 文件来完成。
这是一个可行的解决方案:
Host bhost
HostName www.example.com
PasswordAuthentication no
IdentityFile ~/.ssh/id_ed25519
Host example1
Hostname localhost
User myuser
Port 22021
ProxyJump bhost
PasswordAuthentication no
IdentityFile ~/.ssh/id_ed25519
Host example2
Hostname localhost
User myuser
Port 28022
ProxyJump bhost
PasswordAuthentication no
IdentityFile ~/.ssh/id_ed25519
Host example3
Hostname localhost
User myuser
Port 28023
ProxyJump bhost
PasswordAuthentication no
IdentityFile ~/.ssh/id_ed25519
每个目标设备都需要一个唯一的端口号。它们还有一个共同的主机名localhost
。当然,堡垒主机是一个实际的域名。
通过此配置,您可以通过以下方式达到任何最终目标:
ssh example1
或者
ssh exampleN