新冠疫情严重,居家远程办公

保持心态,注意防控,战胜疫情

Posted by hughnian on February 13, 2020

新冠疫情严重,居家远程办公

不平凡的庚子鼠年

2020年庚子鼠年是个不平凡的新年,人说每逢庚子年都会发生一些大事,果不然这年的新年居然发生大规模的传染病毒。每个人都是诚惶诚恐,一些物资缺乏。 这个新年过的比较惊心动魄😂,唯一点比较好的是,现在啥都变的安静了,路上车也少了,人也少了,仿佛回到了木心诗里写的那样一切变慢了。

虽然在家那也不去的”隔离”了十几天,但是随着日子的增加,你的房贷,车贷,花呗还款这些还是会到来的,你不上班就木有收入了,公司也会陷入发展停滞。 这些都是我们不愿看到的。作为互联网公司相比传统公司的好处,我们可以不用接触人,线上远程的办公,至少可以让工作继续进行。

远程办公

我们几乎所有公司的办公系统都是在公司内网的,想要在家办公,就需要最起码连接到公司内网,或者操作你的公司电脑。这里我之前用过两个软件 teamview向日葵。这两个软件可以轻松的实现在家的电脑控制公司的电脑,但是缺点还是很多,比如操作卡顿不流畅,而且会经常掉线,需要重连。 我现在使用的内网穿透工具frp,这个工具可以让我可以使用微软的远程桌面,公司电脑是windows的,微软的远程桌面流畅度高很多,就像在本地操作电脑一样。 今天主要介绍本地mac系统电脑通过内网穿透远程桌面到windows电脑。

frp 内网穿透工具,项目地址,可以通过这里下载release的版本。它支持tcp,udp,http,https协议。
这里主要就两个东西,一个服务端,一个客户端。服务端需要放在公网服务器,客户端直接装内网的电脑上。其主要原理就是内网客户端发送内网数据到公网服务端,你的本地 电脑在通过访问公网服务端的数据获取到内网的电脑数据。感觉公网服务端就像一个代理服务器。

服务端搭建

一般公网服务器的系统都是linux64位的,这里需要下载frp的linux64位版,主要文件frps, frps.ini, frps_full.ini。
1.配置服务端配置文件frps.ini,

    [common]
    bind_port = 7066
    vhost_http_port = 8089

bind_port为客户端与服务端进行通信的端口,vhost_http_port为服务端http服务的端口。

2.配置带有监控的服务端

    [common]
    bind_port = 7066
    vhost_http_port = 8089
    dashboard_port = 7500
    dashboard_user = admin
    dashboard_pwd = admin

浏览器输入x.x.x.x:7500就可以进入frp监控界面,当然需要输入你设置的用户名和密码。
其它更丰富的配置可参考frps_full.ini和项目帮助文档。

3.启动服务 然后通过 ./frps -c frps.ini命令即可启动服务端

4.设置开机自动启动 上一步中的frps命令会占据了整个命令窗口,所以接下来要考虑如何让它在后台运行并且开机自启,通过vim /etc/systemd/system/frps.service命令新建文件并写入以下内容,

    [Unit]
    Description=frps daemon
    After=syslog.target  network.target
    Wants=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/loal/frp/frps -c /usr/local/frp/frps.ini
    Restart= always
    RestartSec=1min
    
    [Install]
    WantedBy=multi-user.target

这里的ExecStart需要根据自己的情况设置自己的地址,然后使用systemctl start frps即可启动frps, 用systemctl enable frps即可将frps设置为开机启动。 这样启动后可以通过查看端口是否监听判断是否启动成功,查看端口监听状态命令netstat -ano | grep 7066,我绑定的端口是7066。 注意:如果你的服务器是阿里云的话,需要首先把系统的端口打开,再到阿里云安全组策略中打开端口,不然你的服务端将会访问不到。例举个centos7开放端口的命令,centos6与7不一样。

    firewall-cmd --zone=public --add-port=7066/tcp --permanent
    firewall-cmd --reload

客户端搭建

公司的电脑大部分系统是windows的,可能也有mac的,但是frp没有mac的版的安装包,不过你可以试一试在mac下源码编译,源码是golang的。 主要文件frpc, frpc.ini, frpc_full.ini。 1.配置客户端文件frpc.ini

    [common]
    server_addr = X.X.X.X
    server_port = 7066
    
    [rdp]
    type = tcp
    local_ip = 0.0.0.0
    local_port = 3389
    remote_port = 6000
    
    [web]
    type = http
    local_port = 8080
    custom_domains = xxx.com/ip (这里也可以输入服务器ip)

sever_addr配置为公网电脑的IP,server_port与frps.ini中的bind_port一致。rdp为远程桌面的配置,windows的远程桌面默认端口为3389,web为http通信的配置。web中的custom_domains为绑定到公网IP的域名。 同时这里可以配置多种端口,以及多个内网的电脑端口。如

    [ssh]
    type = tcp
    local_ip = 192.168.1.100
    local_port = 22
    remote_port = 2255

这样就实现了可以在家ssh连接到内网的一台服务器上。 注意:如果你的服务器是阿里云的话,需要把remote_port的端口在系统里打开,再到阿里云安全组策略中打开端口,remote_port是指使用云服务器哪个端口访问内网的电脑端口。

2.启动客户端 双击frpc.exe或者用命令frpc -c frpc.ini即可启动客户端,建议使用命令。如果配置一切顺利的话,此时你会在客户端这看到连接成功,服务端那也会看到有连接接入。

3.设置为windows服务同时开机自动启动 借助winsw工具可以将frpc注册为windows系统中的服务。 下载winsw最新版,地址 可以将其重命名为winsw.exe, 将该文件和frpc.exe放在一起,然后新建winsw.xml写入以下内容

    <service>
        <id>frp</id>
        <name>frp</name>
        <description>用frp内网穿透</description>
        <executable>frpc</executable>
        <arguments>-c frpc.ini</arguments>
        <logmode>reset</logmode>
    </service>

然后使用winsw installfrpc start命令即可将frpc安装为系统服务。
win+r后通过services.msc进入到服务列表页面找到frp服务。可以操作启动、关闭服务,双击设置frp服务属性。
1.把启动类型改成自动,这样可以实现自动启动。
2.点击恢复tab切,把里面失败操作都选择为重新启动服务,以保证frpc在连接失败后自动尝试重新连接

Mac系统远程桌面到Windows系统

1 Mac需要下载远程登录控制软件 推荐微软的Microsoft Remote Desktop For Mac,下载连接

2 安装完成后打开软件,输入外网服务器的ip和映射内网服务的端口号,x.x.x.x:6000,点击connect。

3 修复问题
如果出现The certificate or associated chain is not valid报错 解决办法是:
1 点击软件的 Preferences(首选项)

2 选择Security(安全)选项

勾选 Always connect, enven if authentication fails
之后再点击connect进行链接

如果出现“ Remote Desktop Connection cannot verify the identity of the computer that you want to connect to. Try reconnecting to the Windows-based computer, or contact our administrator ” 报错

解决办法是:
在Mac上提示此错误。这时候需要在Windows电脑端进行设置,(最好此时先用向日葵连接上内网电脑设置)需要在通过组策略个性远程桌面服务的安装设置。
开始->运行,输入gpedit.msc,打开组策略编辑器
进入Computer Configuration->Administrative Templates->Windows Components->Remote Desktop Services->Remote Dekstop Session Host->Security
(计算机配置->管理模版->windows组件->远程桌面服务->远程会话主机->安全)
打开”Require use of specific security layer for remote desktop (RDP) connection”的设置,将其设置为Enabled,并且在Options中将Security Layer设置为RDP。
(打开“远程(RDP)连接要求使用指定的安全层”的设置,将其设置为“已启用”,并在选项中将安全层设置为RDP)

之后再点击connect进行连接,就会看到远程界面了。ok