目录
这篇文章是有关于使用RD Client进行远程连接windows电脑的教程,但其实很多内容都适用于此环境的扩展情况,如连接一台没有公网IP的设备,对其进行SSH远程连接等。
起初写这个只是为了偷懒,能用平板远程连接电脑,这样就不用上课背着电脑去啦
市面上其实是有着许多成熟的远程桌面软件,例如Team Viewer。但是RD Client有着许多远比远程桌面更强大的功能,RD用的是微软自家的远程协议,兼容性非常好,使用起来甚至就像是一台Surface。
RD Client配置起来较为繁琐,因为它默认只支持局域网下进行使用,所以当我们不能保证在同一网络下使用的话就一定需要内网穿透来解决这个问题。
内网穿透,也即 NAT 穿透,由于大部分的私人设备都不具备公网IP,所以需要通过一台带有公网IP的NAT设备对内网设备形成一对多的映射,在这种情形下,我们的服务器就需要成为一台具有公网IP的NAT设备,对我们的电脑进行映射,使得在其他设备访问服务器时能将收到的数据转发至我们的电脑。
在理解了内网穿透之后,我们就可以进行最关键的一步了,反向代理。
反向代理是指客户端向代理服务器发送请求,代理服务器转发给内网中的真实处理服务器,获取到内容后返回给客户端。这样我们只需要让两台设备都访问NAT服务器,就能实现内网穿透。
进行反向代理的话,有很多的软件都能做到,这里我使用的是一个免费的反向代理软件FRP。
1、下载FPR
前往Github 的 Release 中下载到最新版本的服务端
可以指定安装目录,此处使用的是 /usr/local/frp
(注意最新的FRP版本号)
cd /usr/local/frp
wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz
解压文件
tar -zxvf frp_0.45.0_linux_amd64.tar.gz
进入解压后的文件目录中修改 frps.ini 配置文件
[common]
#frps服务端口
bind_port = 7000
#控制台端口
dashboard_port = 7500
#控制台用户名
dashboard_user = admin
#控制台密码
dashboard_pwd = admin
#认证方式为token
authentication_method = token
#开启连接时校验token
authenticate_new_work_conns = true
#要校验的token值
token = 123456
#开启Prometheus监控系统。
enable_prometheus = true
tls_enable = true
2、设置开机自启动
使用systemctl来控制启动,编辑 frps.service
sudo vim /lib/systemd/system/frps.service
在frps.service里写入以下内容
(注意修改启动命令为FPR实际安装目录)
[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#Restart=always
Restart=on-failure
RestartSec=5s
#启动服务的命令!!!注意修改为你的FRP实际安装目录!!!
ExecStart=/usr/local/frp/frp_0.45.0_linux_amd64/frps -c /usr/local/frp/frp_0.45.0_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target
保存后运行以下命令
# 设置开机自启动
sudo systemctl enable frps
# 启动应用
sudo systemctl start frps
其他常用命令
# 重启应用
sudo systemctl restart frps
# 停止应用
sudo systemctl stop frps
# 查看应用的日志
sudo systemctl status frps
3、防火墙开放端口
请自行选择开放防火墙端口的方式,须开放配置文件中的服务端口和控制台端口
4、服务端的Dashbord
直接访问服务器的7500端口

1、下载FPR
前往Github 的 Release 中下载到最新版本的客户端
Windows参考如下图

解压文件,进入文件目录,并修改 frpc.ini 配置文件
[common]
#运行fprs的服务器地址
server_addr = xx.xx.xx.xx
#frps运行的端口,需要跟fprs.ini的bind_port值保持一致
server_port = 7000
#需要与fprs.ini的值保持一致才能连接上
authentication_method = token
#需要与fprs.ini的值保持一致才能连接上
authenticate_new_work_conns = true
#需要与fprs.ini的值保持一致才能连接上
token = 123456
#可以是任意名字,表示这个链接的名字,比如要映射多个链接需要多个不同的名字
[ssh]
#协议类型
type = tcp
#将本地127.0.0.1的
local_ip = 127.0.0.1
#3389端口
local_port = 3389
#映射到fps的服务器上的3389端口上
remote_port = 3389
设置开机自启动
3、远程桌面工具安装
很惨,远程桌面这功能专业版直接可以设置,网上随便百度一下开启远程桌面就可以,而家庭版就没那么舒服了,需要自己安装远程桌面工具。
前往RDP Wrapper下载最新版安装工具,参考下图

非常牛批,傻瓜式安装,效果如下图即为安装成功

进入应用商店下载RD Client并打开应用,操作如下


电脑名称中填写 服务器地址:remote_port端口号 如 xxx.xxx.xxx.xxx:3389
用户账户为windows登录账户的用户名和密码,用户名可通过cmd命令whoami进行查询
打开管理员模式可以获得更高的权限
设备和音屏重定向的选项更具需要选择,将获得更好的使用体验
存储之后即可进行远程连接
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m
我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
从MB升级到新的MBP后,Apple的迁移助手没有移动我的gem。我这次是通过macports安装rubygems,希望在下次升级时避免这种情况。有什么我应该注意的陷阱吗? 最佳答案 如果你想把你的gems安装在你的主目录中(在传输过程中应该复制过来,作为一个附带的好处,会让你以你自己的身份运行geminstall,而不是root),将gemhome:键设置为您在~/.gemrc中的主目录中的路径. 关于通过MacPorts的RubyGems是个好主意吗?,我们在StackOverf