通过堡垒主机连接时可实现最少输入的 SSH 配置

通过堡垒主机连接时可实现最少输入的 SSH 配置

为了通过跳转代理(堡垒主机)连接到设备,我输入以下内容:

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

相关内容