在端口限制严格的服务器上如何愉快的使用远程桌面

2017-01-10 10:44:09 +08:00
 Tuisku
前景提要:
- 公司项目放在新合作方的服务器上并且以信合作方的名义运营
- 蛋疼的是,每次发布代码什么的都要通过以下流程
· QQ 联系新合作方,告知需要远程,需要发布的文件通过 EMail 发送给对方,对方下载
· 对方在他们的电脑上通过 [内网] 远程到服务器上
· 我们通过 QQ 远程协助控制对方的电脑操作服务器进行发布操作

经过一段时间之后实在是,受不了,这种,尴尬的行为:
· 如果有紧急问题需要解决,大半夜的那种,肯定是很难迅速解决
· 每次发布东西都要尴尬的跟对方交谈半天顺便互相问好表示天气不错
· 有时候临近下班时间发布,总感觉自己耽误了对方的休息时间
· …… And more

但是!对方又不允许我们在服务器上安装能内网穿透的远程软件,想偷偷的安装也不行,毕竟每次远程操作都在对方的监控下(呕,我死了

现在只能做到在产品的代码里加了个能执行 SQL 语句的小 Shell ,但是对方给每个请求设置了 45s 的超时,每次需要导出一点大的东西, SELECT 的东西多一点,过了 45s 就玩儿完。(呕 我又死了

不知各位 dalao 有什么好的解决办法,比如在产品内置一个 Web 端的远程之类的( ASP.NET 技术栈,服务器仅开放 80 端口
4153 次点击
所在节点    问与答
31 条回复
ryd994
2017-01-10 10:47:20 +08:00
说到底,人家不急你急什么?
Tuisku
2017-01-10 10:49:28 +08:00
@ryd994
人家是指合作方那里?我们这运维和实施那边很多数据导出的工作,但是因为有个 45s 的超时,导致部分数据没法导出。要么我去要远程直接在数据库导出,要么等第二天早上 4 点数据库自动备份回来,从备份库里导。但是不是所有工作都能等的。
shakoon
2017-01-10 10:50:21 +08:00
自己搞这种后门被你们合作方知道了,你们怕是要完哦
Midnight
2017-01-10 10:51:58 +08:00
teamviewer 完美解决你的问题
Tuisku
2017-01-10 10:52:14 +08:00
@shakoon
不搞点这种小后门,其他部门的同事工作很受影响。可是外省业务的推广还要靠这合作方(蛋疼
Tuisku
2017-01-10 10:53:48 +08:00
@Midnight
对方不允许我们装这玩意儿,之前也想过,至少不能在对方眼皮子底下装。。
ncwgf
2017-01-10 10:54:58 +08:00
建置一台東西給 git 的 只讓雙方跟服務器能存取的
東西要發佈就 push 上去 然後自動 /自行通知對方
叫對方自己連好服務器自行執行一個寫好的 shell script pull 下來
嗒啦~

嗯...前後端分離 (咦
ncwgf
2017-01-10 10:56:22 +08:00
咦 沒留意要導出數據...
不留後門之類..就...沒辦法
gamexg
2017-01-10 12:17:10 +08:00
既然决定留后门了,那么感觉技术上没难度啊。
ASP.NET 不熟悉,但是记得这个除了账号权限不足外功能齐全。
.NET 不是允许运行时编译吗?直接留个提交代码并执行的功能,方便随时使用。
长时间运行的编译成独立程序单独运行吧。
mmmyc
2017-01-10 13:17:33 +08:00
你背得起锅就留后门呗。
Tuisku
2017-01-10 13:39:25 +08:00
@mmmyc
锅肯定背得起( 233 ,小后门就是前辈留的,前辈说没空做功能全的后门,让我有空自己倒腾个),就看到时候真出事儿了是卖了我还是咋地
nfroot
2017-01-10 13:45:44 +08:00
webshell ?一句话木马?
Tuisku
2017-01-10 13:51:06 +08:00
@gamexg
有这个想法,是做一个功能确切的后门还是留一个像这样能执行代码的后门,感谢回复~
BOYPT
2017-01-10 13:57:12 +08:00
开个 putty 配置的 tunnel ,表面是个 shell 实际是个隧道。
Tuisku
2017-01-10 13:59:34 +08:00
@BOYPT
但是合作方那边只给开了 80 端口,映射不到其他外网端口上
BOYPT
2017-01-10 14:01:22 +08:00
@Tuisku ssh 是对外链接,跟他开什么端口没关系
Tuisku
2017-01-10 14:23:37 +08:00
@BOYPT
稍微查了下资料,大概意思是,这台只有 80 的服务器做个反代这样吧~
thomaspaine
2017-01-10 16:52:54 +08:00
@Tuisku 你都有小 shell 了,把你需要的功能拆开吧
比如你要导出数据,有超时限制,那你就写个脚本,把你要的数据导出到一个目录,并且打包加密好,然后你过段时间去下载,下载完了再运行一个小脚本来把这个目录删除

更新代码其实也可以,做个接口,接收你上传的代码,备份好原来的代码吼,解压覆盖原来的,重启服务,如果产生错误,就恢复到原来的那个版本的

这种手法让我想到了以前硬件产品的固件升级…… nor flash 里面有一个区域是写死的,就是干这个更新固件的操作的
kuretru
2017-01-10 17:16:35 +08:00
放个菜刀 解决
BOYPT
2017-01-10 17:16:42 +08:00
@Tuisku 不是反代。
ssh 有个端口转发功能,分为 Local 模式和 Remote 模式
Local 模式是在 ssh 客户端本地打开一个监听端口,隧道映射到远程主机的 sshd 链接一个特定地址的特定端口;
Remote 模式是在 ssh 主机那边开个端口,隧道映射到 ssh 客户端这边地址的特定端口。

所以你想开个远程桌面,就是-R 3389:127.0.0.1:3389 的用法了,然后你在外网只需要同样链接这台 ssh 服务器,链接 3389 端口就打开你内网的桌面了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/333525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX