A23*_*A23 5 ssh amazon-web-services
目前,按照正常程序,我们在云网络的每个公共子网中都有一个堡垒服务器,我们尝试通过以下配置访问它 -
Host webserverA
User myuser
Hostname 192.168.1.10
ForwardAgent yes
Port 22
ProxyCommand ssh -q bastionA nc %h %p
IdentityFile ~/webserver.pem
Run Code Online (Sandbox Code Playgroud)
有没有办法让我将此模型扩展到拥有另一个堡垒服务器?
堡垒B -> 堡垒A -> 网络服务器A ?
原因是我想将其视为信任链。当发生相当糟糕的事件时删除某些内容。
CoT 我的意思是,如果一组用户离开,我们可以更改第一组密钥,以便我们可以阻止他们进一步访问。
使用 OpenSSH 7.3 及更高版本:
Host webserverA
ProxyJump bastionA,bastionB
Run Code Online (Sandbox Code Playgroud)
通过命令行相同:
$ ssh -J bastionA,bastionB webserverA
Run Code Online (Sandbox Code Playgroud)
或者(也与 7.3 一起使用;不要将其与以上版本混用):
Host webserverA
ProxyJump bastionB
Host bastionB
ProxyJump bastionA
Run Code Online (Sandbox Code Playgroud)
使用旧版本 – 大部分相同(但不会自动复制选项,如ssh -v):
Host webserverA
ProxyCommand ssh bastionB -W %h:%p
Host bastionB
ProxyCommand ssh bastionA -W %h:%p
Run Code Online (Sandbox Code Playgroud)
此方法在本地启动所有连接,ssh -W为每个步骤设置隧道。因此,身份验证在本地发生(ForwardAgent 和 GSSAPIDelegateCredentials 不是必需的),并且您的本地.ssh/config身份也适用于每个步骤。服务器端,只需要基本的“TCP 转发”支持,与使用-W或时相同-L。
然而,每一层都会增加额外的开销,因为它最终会在 SSH 中携带 SSH in SSH in SSH。
请注意,每个主机,除了最外面的一个,在它之前通过服务器列出一个 ProxyCommand。如果您有 3 个服务器,您将使用 [webserverA 通过 bastionC]、[bastionC 通过 bastionB] 和 [bastionB 通过 bastionA]。
Host webserverA
ProxyCommand ssh bastionA -A ssh bastionB -W %h:%p
Run Code Online (Sandbox Code Playgroud)
此方法逐跳启动连接,ssh在每一跳上运行以连接到下一跳。因此ForwardAgent必须启用ssh-agent 并且必须启用(或者GSSAPIDelegateCredentials如果您使用 Kerberos);任何其他特殊.ssh/config设置都必须复制到所有堡垒主机。
另一方面,它产生较少的协议开销(每一步最多两层)。
(编辑:添加-A到始终请求代理转发。)
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |