ssh端口转发应用:内网穿透

利用ssh的端口转发功能,实现内网穿透。

  1. 公司电脑是有线网线,开启了远程桌面,而且你的账号有远程桌面权限。
  2. 公司防火墙限制第三方的远程软件,无法外部通过第三方远程软件,连接到公司电脑上;但公司防止墙是允许,公司电脑连接公网上的SSH服务器。
  3. 你在公网上有一台SSH服务器,家里的电脑或出差的笔记本可以连接公网上的SSH服务器。
  4. 你也期望在家里或出差时,能通过远程桌面登陆上公司电脑。

端口转发实现网穿透

这个时候,就可以使用SSH隧道实现内网穿透。同时,你也了解 ssh端口转发 的基本知识。

第一步:在SSH服务器上,在sshd_config中开启网关与转发,并重启ssh服务。

GatewayPorts yes
AllowTcpForwarding yes

第二步:在公司电脑上,使用ssh的远程端口转发建立SSH隧道。会占用SSH服务器的33891端口,此端口不需要在防火墙中开放。

ssh sshUser@sshIP -R 33891:localhost:3389

第三步:在家里的电脑或出差的笔记本上,使用ssh的本地端口转发建立SSH隧道。

ssh sshUser@sshIP -L 33892:sshIP:33891

第四步:在家里的电脑或出差的笔记本上,打开远程桌面程序输入 localhost:33892,就实现内网穿透到公司电脑上了。

上面第三步是关键,需要公司电脑上SSH远程端口转发隧道一直存在,所以可以使用以下脚本加入开机自启动:

RunHiddenConsole.exe C:\Windows\System32\OpenSSH\ssh.exe sshUser@sshIP -R 33891:localhost:3389 -N -o TCPKeepAlive=yes -f

工具下载:RunHiddenConsole

第三方软件通过ssh联网

另外一个思路,或者没有开启远程桌面权限,但安装了第三方远程软件,且支持代理连接配置,让第三方软件通过ssh联网,可以绕过公司防火墙的限制,实现远程控制公司PC。

@echo off
%~dp0pskill64.exe ssh
%~dp0RunHiddenConsole.exe %SystemRoot%\System32\OpenSSH\ssh.exe sshUser@sshIp -i"sshPrivateCert.pem" -D 1081 -N -o TCPKeepAlive=yes -f
%~dp0pslist64.exe ssh
ping localhost -n 3 > nul
rem 常用端口号:https://cloud.tencent.com/developer/article/1897800
rem 公认端口(Well-KnownPorts):范围从0到1023

在第三方远程软件的代理连接配置为socks5的ip为127.0.0.1,端口为1080。注意,由是ssh.exe,sshPrivateCert.pem文件的NTFS权限需要被保护,如果有其他用户可以读取,ssh连接失败,报错:UNPROTECTED PRIVATE KEY FILE! (未受保护的私钥文件)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注