我如何使用公共主机连接到私人主机?
服务器B以例如192.168.1.130连接到专用网络。 服务器A可以使用ssh使用其公共ip连接; 132.x.x.x. 我将如何使用ssh连接到B,以便它首先连接到A,从B连接到B,因为B不能直接连接到外部网络。 我想从做自己限制是: 用户@当地:$ ssh的一个@一个我如何使用公共主机连接到私人主机?
一个@阿:$ SSH b @乙
而是我在找做什么沿着线:
用户@本地:$ SSH b @乙
在内部连接到@ A和则b @ b中。
我该如何实现这一套ubuntu服务器?
我试图编辑的〜/ .ssh /配置包括
Host A
User a
HostName 192.x.x.x
Host B
User b
ProxyCommand ssh -q A nc -q0 192.x.x.x 22
当从 “a @ A” 运行b @ B获得我期望的输出,该输出通过连接a至b(虽然相当无意义)。我如何才能达到这个目标,在其系统上无法编辑配置文件或类似的用户。
PS:A有一个public ip而B被限制为私人 ip。
编辑:编辑的示例代码正确地意味着什么,我想意思
显然ProxyCommand可以在命令行通过-o
通过;不太漂亮,但似乎是预期的方法。
见https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts
作为一个说明,虽然,我想你可能已经得到其中以A/B为公共/私人倒退,因为你最初的一段似乎违背你的最后陈述。
关于确切解决方案http://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-passing-through-one-host-gateway-server/的更多详细信息和图表。
'$ ssh -tt一个ssh -tt B' 工作得很好,完成了我所需要的工作。 然而,如果没有列表A,则可以执行与上述相同的命令。另外,作为要求,也可以使B指向A的IP地址。虽然我的主要要求是通过A –
噢隧道到B;这听起来像你有一些不兼容的要求,如(1)根本不编辑配置文件,(2)没有在命令行中列出A.在这种情况下,除非你有脚本或者列表A,否则SSH根本无法知道主机A. – user508633
假设用户x正在连接公共ip,并且他希望连接到主机B;我需要的是他输入ssh b @ B。 B然而与A具有相同的IP。他们都被重定向到了@A。然后系统A知道该请求不是为了它而是主管B,然后将用户x重定向到主机B或b @ B。 –
使用ProxyCommand
的首选方式是使用-W
开关。 nc
版本要求在跳转盒上安装netcat
。
Host A
User a
HostName 192.x.x.x
Host B
User b
ProxyCommand ssh -W %h:%p A
而且请注意字母大小写!在你的例子中你有那里的大写用户。也不要放在那里-q
切换,直到你知道它工作正常。它不会,请在ssh
命令中添加一些-vvv
以查看发生了什么以及发生了什么故障。
啊,非常有趣,我不知道SSH现在为此目的嵌入了netcat功能。很酷的功能! (虽然我想知道它是否有任何有趣的安全隐患......) – user508633
我想实现的是告诉世界,如果你想访问B,使用“ssh b @ B”。我不想告诉他们有关服务器A本身,而是我希望服务器A自动通过A自动重定向请求访问B的用户。我拥有的是A和B都指向相同的主机,即A。因此@B与@A相同。 –