ssh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ssh支持正向代理、反向代理、socks代理

正常cs模式下,cs端都开有22端口

本地22->远程22

正向代理 -L,本地代理远程端口
远程3306通过22将本地3306打开,监听本地3306

反向代理 -R,远程代理本地端口
本地3306通过22将远程3306打开,监听远程3306

socks代理 -D,为本机开启远程socks代理
-D更像是-L代理远程scoks的1080,不过不开远程1080
本地1080通过22打通远程socks,本地监听1080为socks代理
ssh -CNTfD 0.0.0.0:1080 root@远程ip -o TCPKeepAlive=yes
ps:windows下openssh不太稳定,可以使用git windows自带的ssh

autossh.py windows

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import psutil

import time
import os
import sys

def if_ssh():
flag = False
for i in psutil.process_iter(['name', 'cmdline']):
if i.name() == 'ssh.exe':
flag = True
break
return flag


def main(sh, stime):
while 1:
if if_ssh():
time.sleep(int(stime))
else:
os.system(sh)


if __name__ == '__main__':
if len(sys.argv) == 1:
print('autossh command stime')
else:
sh = sys.argv[1]
if len(sys.argv) > 2:
stime = sys.argv[2]
else:
stime = 5
main(sh, stime)

start.vbs

使用pyinstaller 将autossh.py打包成autossh.exe,然后将远程ip的ssh设置成本地免密登陆
start.vbs可以将autossh.exe开在windows后台,chrome使用SwitchyOmega或Proxy SwitchyOmega代理本地1080端口

1
2
3
dim WSHshellA
set WSHshellA = wscript.createobject("wscript.shell")
WSHshellA.run "autossh.exe "&chr(34)&"ssh.exe -CNTfD 0.0.0.0:1080 root@远程ip -o TCPKeepAlive=yes"&chr(34)&" 10",0 ,true

参考
使用ssh正向连接、反向连接、做socks代理的方法