对于以下设置:
机器 A 可以使用命令通过 SSH 连接到 Bastion 主机:
ssh -i keyA.pem user@bastion_host
如何使用单个 SSH 命令连接到计算机 C(内部服务器),例如无需使用 .ssh/config当机器 C(内部服务器)使用它自己的密钥(密钥 B)时,它们保存在机器 A(本地机器)上,而不是机器 B(堡垒主机)上
如何使用跳转参数(例如,从机器 A 使用 ssh -J user@ip_address)连接到机器 C?例如,像这样
ssh -J bastionUser@Bastion_host -i keys_A.pem serverUser@Inner_Server -i key_B.pem
答案1
有两种方法可以做到这一点
1.通过 ssh-add 命令为 ssh-agent 添加密钥
在本地机器(即机器A)上为机器B添加密钥A
ssh-add path_to_keyA/key_A.pem
在本地机器(即机器A)上为机器C添加密钥B
ssh-add path_to_keyB/key_B.pem
然后使用ssh命令连接
ssh -v username@Machine_C -o "ProxyCommand=ssh -W %h:$p username@Machine_B"
- -v 只是输出正在发生的事情
- 您需要将每台机器的用户名替换为远程机器上配置的用户名
- 在您的设置中将 Machine_C 和 Machine_B 替换为主机名或 IP 地址
2. 无需向代理添加密钥
如果你只想通过单个命令进行连接而不使用代理,那么你可以使用
ssh -v -i path_to_key_B/key_B.pem username@Machine_C -o "ProxyCommand=ssh -i path_to_key_A/key_A.pem -W %h:%p username@Machine_B"
再次...
- -v 只是输出正在发生的事情
- 您需要将每台机器的用户名替换为远程机器上配置的用户名
- 在您的设置中将 Machine_C 和 Machine_B 替换为主机名或 IP 地址
- -i 标志后面跟着的是本地机器(即机器 A)上各个键的位置
如果出现密钥权限问题,请确保密钥sudo chmod 600 密钥文件名.pem