我正在尝试找出通过服务器访问SSH
内部服务器时不同方法的优缺点VPN
NAT
先决条件:
1- key.pem
:两个服务器的 .pem 文件(假设两个服务器使用相同的 .pem):
2- 公共访问服务器到服务器22
的SSH 端口NAT
:55.55.55.55
22
3- 从 NAT 服务器到服务器后面的服务器上的SSH 端口的私人访问NAT
:10.0.0.100
据我所知有三种方法:
1-使用端口转发 -L 选项:
从一号航站楼出发:
ssh -i key.pem -L 5555:10.0.0.100:22 [email protected]
从二号航站楼出发:
ssh -i key.pem -p 5555 user@localhost
2- 使用代理转发
ssh-add -K key.pem
ssh –A [email protected]
然后从另一个终端:
ssh [email protected]
3-通过配置 /etc/ssh/ssh_config 使用代理命令(至少在 ubuntu 中如此,不确定其他操作系统)
将以下内容添加到/etc/ssh/ssh_config
Host 10.0.0.100
IdentityFile <ABSOLUTE FOLDER PATH>/key.pem
ProxyCommand ssh -q -W %h:%p -i <ABSOLUTE FOLDER PATH>/key.pem [email protected]
然后从终端使用:
ssh [email protected]
我发现选项 3 最方便但不确定它的安全性。
所以我的问题是,在什么情况下应该使用每种方法?优点和缺点是什么?
答案1
这种方法称为通过堡垒主机或跳转主机进行 SSH。下面是简短的文章我写的关于这个技术的文章
(1) 和 (3) 都是安全的,但 (3) 是最方便的。可以说,这是最正统的做法。(3) 的主要区别在于,它-W
使 SSH 监听 stdin,并通过 jumphost 将数据包转发到最终的 SSH 端点。-L
监听客户端上打开的 TCP 套接字。
(2)不安全,请不要使用。阅读此内容很棒的文章了解更多信息。简而言之,-A
在 jumphost 上打开一个套接字,将 SSH 身份验证请求转发回客户端。如果套接字被攻破,攻击者可以使用该套接字对您有权访问的任何主机进行身份验证。
ssh
的手册页有一个警告:
-A Enables forwarding of the authentication agent connection. This can also be specified on a per-host basis in a configuration file.
Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent's UNIX-domain
socket) can access the local agent through the forwarded connection. An attacker cannot obtain key material from the agent, however they can perform
operations on the keys that enable them to authenticate using the identities loaded into the agent.