我有一台 3G PPP 连接的远程计算机。我无法通过 Internet 连接到这台计算机,因为我相信 PPP IP 池使用 NAT 连接到 Internet(连接时我得到了 10.xxx 地址)
所以我让远程计算机创建到 Internet 上服务器的 SSH 连接。然后我可以从服务器建立这个连接并在远程计算机上获得一个 shell。伟大的。
我希望能够访问远程网络上摄像机的 Web 界面。所以我创建了第二个 SSH 隧道,将流量重定向到相机的地址,即:ssh -R 9000::
从我的互联网主机这有效,我得到了网页: wget 127.0.0.1:9000
现在我需要它在我的客户端 PC 上工作,所以:
客户端 PC --> Internet 服务器 --tunnel--> 远程计算机 --> IP 摄像机
所以基本上我需要让我的反向 SSH 隧道通过网络可用。
我假设我是否只是使用 iptables 将 Internet 服务器上某个端口上的传入流量转发到 127.0.0.1:9000 会起作用,但是在玩了 iptables、NAT 等几个小时后,我无法让它工作。
这应该工作吗?
(只是在 SO 上问过这个问题,但有人建议把它放在这里)
我设法在 Raspberry Pi 2 和我的服务器(具有静态 IP 的服务器)之间创建了一个反向 SSH 隧道,并且工作正常。我在服务器上使用的用户帐户称为“ksproxy”(它不是真正的“代理”,但无论如何)。
现在我正试图让autossh
(来自 Debian / Raspbian 包autossh
)也能工作,但我没有成功。我可能很接近。
(我已在此问题中将真实 IP 更改37.xxx.yyy.zzz
为不发布服务器的实际 IP)
这是工作正常的方法:(没有 autossh)
在 Rpi 上:
rspi@antlia:~ $ ssh -N -R 20000:localhost:22 ksproxy@37.xxx.yyy.zzz
Run Code Online (Sandbox Code Playgroud)
在服务器上(具有静态 IP 的服务器):
ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -t -p 20000
rspi@localhost's password:
rspi@antlia:~ $
Run Code Online (Sandbox Code Playgroud)
所以一切正常:我输入密码并得到一个终端/提示。
我什至可以从我的桌面访问 Raspberry Pi(首先通过服务器),执行以下操作:
ssh -t ksproxy@37.xxx.yyy.zzz "ssh rspi@localhost -p 20000"
ksproxy@37.xxx.yyy.zzz password:
rspi@localhost's password:
...
rspi@antlia:~
Run Code Online (Sandbox Code Playgroud)
它首先询问服务器的密码,然后询问 Pi 的密码,一切都很好。
到现在为止还挺好。
现在我尝试相同但这次使用 autossh:
rspi@antlia:~ $ autossh -M 20000 …
Run Code Online (Sandbox Code Playgroud) 我在家里的 Windows 10 计算机上有一个 ssh 服务器,当我使用 PuTTY 从我的 Windows 10 工作计算机使用以下命令设置反向隧道时:
putty.exe -ssh user@xxxxxxxxxx -R 9999:localhost:3389
Run Code Online (Sandbox Code Playgroud)
我可以在家里使用远程桌面并登录到我的工作计算机。
这一直有效,直到我移动 PuTTY 窗口,然后我的本地窗口冻结。解决方法是不要触摸那个窗口,但这很烦人。这是一个已知问题吗?
明确地说:只有我正在查看我的工作计算机的家用计算机上的窗口(远程桌面窗口)冻结。我家用电脑上的其他一切都运行良好,当我让正在工作的同事查看我的工作计算机时,他说他可以看到 PuTTY 窗口,并显示连接丢失的消息。他能够关闭 PuTTY 并使用上述命令重新连接到我的家用计算机,一切都恢复正常,直到我不小心再次单击 PuTTY 窗口。
我需要想办法强制RDP
(远程桌面)响应特定端口而不是 RHP(随机高端口)。我不是在问如何更改RDP
“侦听”端口,而是相反。
我正在尝试SSH
在两个系统之间建立一个实验性的正向/反向隧道。我使用第三个系统作为枢轴点来隐藏我在转发隧道上的 IP。但我希望我通过转发 SSH 隧道远程进入的系统通过单独的反向SSH
隧道将响应发送到“指定”端口而不是 RHP。基本思想是我希望能够控制我想要侦听和/或接收的端口,并且我不希望任何事情都是随机的。话虽如此,这是我设置的快照。
编辑:图像中的所有 IP 地址都已更改,这将使您稍后阅读我编辑到问题中的日志时感到困惑。新的 IP 地址是:
正如您在最后一步所看到的,我的RDP
会话SSH
正像我想要的那样通过反向隧道发送回。所以我的RDP
会话有两个管道。但它是在 RHP 上发回的,我不知道如何告诉它将它发送到特定端口,:44444
例如。
有谁知道如何做到这一点?
我需要以特定方式完成此操作。这些是我必须使用的端口。我已经设置Duclaw
监听RDP
端口1337
而不是3389
. 我知道这绝不是最简单的方法。
我需要远程桌面连接“出现”,就好像它来自devilsmilk
. 但我想duclaw
直接将响应发送回,kgraves-pc
而无需通过devilsmilk
. 因此,为了kgraves-pc
在RDP
会话被发送到localhost
其随后经由转发ssh
隧道通过devilsmilk
向duclaw
,但RDP
其响应于该连接被接收的分组是直接从接收到的Duclaw …
remote-desktop cygwin port-forwarding ssh-tunnel reverse-tunnel
我设置了从家庭计算机到工作服务器的反向 SSH 隧道:
ssh -f -N -R 19999:localhost:22 remoteuser@server
Run Code Online (Sandbox Code Playgroud)
要连接到我的家庭计算机,我必须首先登录到服务器,然后从那里登录到我的家庭计算机:
otheruser@othermachine$ ssh remoteuser@server
remoteuser@server$ ssh -p 19999 homeuser@localhost
Run Code Online (Sandbox Code Playgroud)
但我希望能够跳过一步并直接通过端口 19999 连接,例如:
otheruser@othermachine$ ssh -p 19999 homeuser@server
Run Code Online (Sandbox Code Playgroud)
我不太熟悉iptables
,而且我一直在阅读,但打开一个端口似乎很令人困惑。我很确定我需要添加一条规则iptables
,但是我还需要做什么吗?
服务器是RHEL 6,我的家用计算机是Ubuntu 14.04
在我的电脑上:
mosh --ssh="ssh -R 1024:localhost:22" root@RaspberryPi
Run Code Online (Sandbox Code Playgroud)
在圆周率上:
ssh -p 1024 root@localhost
Run Code Online (Sandbox Code Playgroud)
但我收到了这条消息:
pi@raspberrypi ~ $ ssh -p 1024 root@localhost
socket: Address family not supported by protocol
ssh: connect to host localhost port 1024: Address family not supported by protocol
Run Code Online (Sandbox Code Playgroud)
是否可以使用 MOSH 制作反向隧道?或者我错在哪里?
更新:
在圆周率上:
mosh --ssh="ssh -R 1024:localhost:22" root@PC
Run Code Online (Sandbox Code Playgroud)
在电脑上:
ssh -p 1024 root@localhost
Run Code Online (Sandbox Code Playgroud)
然后我被拒绝了:
bash-3.2$ ssh -p 1024 pi@192.168.1.222
ssh: connect to host 192.168.1.222 port 1024: Connection refused
Run Code Online (Sandbox Code Playgroud)
正如标题所说,如何使用 MOSH 制作反向隧道?是否可以?
ssh ×3
connection ×1
cygwin ×1
iptables ×1
linux ×1
putty ×1
ssh-tunnel ×1
ubuntu ×1
windows-10 ×1