将 ssh_alias 与 ssh 隧道结合使用

将 ssh_alias 与 ssh 隧道结合使用

我正在使用 ssh 隧道登录网关后面的系统。问题是我在网关服务器上的 ~/.ssh/config 中定义了 ssh_alias 。我有密钥和 IP 设置的地方。但这些别名不适用于 nc 命令。有没有办法在 nc 命令中使用别名并使用在网关服务器上完成的密钥设置?所以我不需要在本地服务器上下载密钥。示例:网关服务器

~/.ssh/config
Host test
HostName 192.168.1.10
IdentityFile ~/keys/test
User test

本地服务器 ~/.ssh/config

  Host test
  ProxyCommand ssh gateway nc %h %p

由于 nc 不知道测试,以下配置失败。

答案1

你问的几乎是一样的

如果您不想将密钥从网关复制到本地盒子,解决方法是使用该帖子(及下文)中的方法 1(bash 别名)。 ssh_config 无法执行您想要的操作。我在那里有关于别名和隧道方法之间区别的详细解释,其中包括 ssh_config ProxyCommand

方法一

在 中~/.bashrc,添加以下行

alias ssh-test='ssh -t gateway ssh test@test'

在命令提示符下,只需键入以下内容

ssh-test

所做ssh -t gateway ssh test@test的与下面几乎相同

local# ssh gateway
gateway# ssh test@test

除了将两个步骤合而为一之外,它还跳过在 上打开 shell(csh、bash 等)gateway,而是在身份验证后立即启动 ssh 会话test

您不需要本地机器上的 ~/.ssh/config 但保留一个网关test(用于密钥使用)。

添加ForwardAgent yes到网关.ssh/config

Host test
    HostName 192.168.1.10
    ForwardAgent yes
    IdentityFile ~/keys/test
    User test

方法2

如果您不想将网关密钥复制到本地盒子,但允许将localssh 密钥安装到test@test.然后你可以使用以下

当地的~/.ssh/config

Host gateway
    User <gateway user>
    HostName <gateway/IP>

Host test
    User test
    Hostname 192.168.1.10
    Port 22
    ProxyCommand ssh gateway nc %h %p

相关内容