欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过路由器端口映射实现远程桌面连接

程序员文章站 2024-02-11 15:23:10
...

写在前面  最重要的一点  如果是光猫拨号 需要改成路由器拨号光猫桥接的模式  然后在端口映射 可能存在 你家的公网ip和光猫的公网ip不一样 这种情况就是你的光猫连接的是片区的大路由器 考虑找电信申请一个公网ip

1.起因

    花生壳,teamviewer 等始终要到服务器去绕一遍 网络不友好,不如干脆直从路由器映射端口来连接;

2.思路

    通过修改本机远程桌面端口,然后在路由器添加端口映射,然后通过定时任务将本机公网IP发送到邮箱;

从而实现随时获取远程计算机公网ip来实现远程桌面连接;

3.行不通的情况

    3.1 没有公网ip

    3.2 你改不来路由器端口映射

 

4.实现方法

    4.0 开启远程桌面

    4.1 修改远程桌面端口

        参照:https://jingyan.baidu.com/article/e52e36154ad4f740c60c5136.html

    4.2 修改路由器端口映射

        此处自行百度你的路由器品牌和型号去设置

    4.3  创建vbs脚本

''getIP 获取当前公网IP并发送到邮箱
''路由器端口映射自行处理 大概是nat之类的
''设置远程桌面端口  https://jingyan.baidu.com/article/e52e36154ad4f740c60c5136.html
''定时任务添加方法  https://blog.csdn.net/qianxing111/article/details/80015702
set http=createobject("Microsoft.XMLHTTP") 
ipp="http://2019.ip138.com/ic.asp" ''ip获取地址
http.open "get",ipp,false 
http.send 
ss=bytes2BSTR(Http.responsebody) 
intStrA = InStr(1,ss,"[",1)+1 
sss=mid(ss,intStrA) 
intStrB = InStr(1,sss,"]",1)-1 
ss=mid(ss,intStrA,intStrB) 
'wscript.echo ss 

Function bytes2BSTR(vIn) 
strReturn = "" 
For i = 1 To LenB(vIn) 
ThisCharCode = AscB(MidB(vIn,i,1)) 
If ThisCharCode < &H80 Then 
strReturn = strReturn & Chr(ThisCharCode) 
Else 
NextCharCode = AscB(MidB(vIn,i+1,1)) 
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 
i = i + 1 
End If 
Next 
bytes2BSTR = strReturn 
End Function 
 

Set objFSO = CreateObject("Scripting.FileSystemObject")
''ip缓存文件,当ip变化会更新此文件内容并发送邮件,需要测试则每次执行后删除此文件
fpath="c:\publicip.dat"

Set objFile = objFSO.OpenTextFile(fpath, 1,true)
do while objFile.atendofstream<>true
fstr = objFile.readline
loop
objFile.Close
If fstr = ss Then 
wscript.quit
Else
objFSO.OpenTextFile(fpath, 2).write(ss)
End If 


''SendEmail 
NameSpace = "http://schemas.microsoft.com/cdo/configuration/" 
Set Email = CreateObject("CDO.Message") 
Email.From = "****@163.com" ''发件人
Email.To = "****@163.com" ''收件人
Email.Subject = "公网ip通知 -" &date()  ''标题
Email.Textbody = ss&"   ,Date:"&date() 'ss为获取到的ip 
With Email.Configuration.Fields 
.Item(NameSpace&"sendusing") = 2 
.Item(NameSpace&"smtpserver") = "smtp.163.com" 'smtp服务器地址 
.Item(NameSpace&"smtpserverport") = 25 
.Item(NameSpace&"smtpauthenticate") = 1 
.Item(NameSpace&"sendusername") = "***@163.com" ''邮箱账号
.Item(NameSpace&"sendpassword") = "***" ''邮箱密码
.Update 
End With 
Email.Send

        4.4 将以上代码复制 保存为.vbs扩展名的文件 然后修改里面的****处 为你自己的信息

        4.5 创建计划任务

            参照:https://blog.csdn.net/qianxing111/article/details/80015702

            注:  在触发器那一栏可以加上启动时
            注:  很重要一点 用户那个地方要设置成system用户 不然你没有远程连接的时候 他不会执行 

   5. 以上就是我要说的全部内容