我正在使用 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
如果您不想将网关密钥复制到本地盒子,但允许将local
ssh 密钥安装到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