远程办公
关于远程办公,或者跨机器的一些实践说明。
远程办公
使用向日葵等这种远程软件直接远程过来办公。这是最简单的,也是非常容易入门的方式。各种环境都在,除了可能网络差一点。
vscode +ssh + frp + squid
- 配置好frp,将远程的ssh端口、squid端口透传。
- squid配置代理,使用sock5代理远程的环境,本机浏览器可以使用代理,直接访问到远程的服务。
- 在本地不用保存任何代码,使用vscode直接通过ssh连接到远程的过去,编辑文件。
- 使用浏览器,配置好代理,访问远程的http服务,进项的debug。
除此之外,vscode也可以换成远程的vim来直接操作。
ssh_config配置
相关资源https://www.bbsmax.com/A/D854LXKp5E/
cat ~/.ssh/config
# cp /usr/bin/bash ~/.ssh/config
# man ssh_config 5 # 查看帮助文档
可以使用的配置如下:
# 前3个为基本配置项
Host jobvm
HostName 10.172.41.206
User root
Port 62222
#执行本地命令
#PermitLocalCommand yes
#LocalCommand echo 111
ControlMaster auto
ControlPath /tmp/%r@%h:%p
# 不可达,使用 jobvm 作为跳板机
# 方式1
Host caikun
HostName 10.172.41.111
User root
Port 22
ProxyJump jobvm
# 方式2
Host caikun2
HostName 10.172.41.111
User root
Port 22
ProxyCommand ssh jobvm netcat -q 600 %h %p
# 本地端口转发
Host forwardtest
HostName 10.172.41.206
User root
Port 62222
LocalForward 58080 127.0.0.1:58080
登录
ssh jobvm
拷贝文件
scp * jobvm:/root/ctypes_example-master/tutorial1
rsync -av test jobvm:/root/test
sftp jobvm
编辑远程文件
使用vim直接编辑远程的文件。
vim scp://root@example.com//home/centos/docker-compose.yml
使用vscode直接编辑远程文件
配置好vscode的ssh工具,可以直接编辑。
ssh端口代理
通过配置了~/.ssh/config文件,可以减轻使用代理功能的难度。参见如下:
远程端口转发
远程端口转发的意思是:跟ssh连接的方向相反。从ssh的服务端的那台机器主动建立tcp连接,访问ssh客户端所有环境的服务。如下:服务端访问localhost:5678,被代理到10.172.41.206:62222的端口。
# 远程端口转发 RemoteForward
Host dog
HostName 1.15.47.218
Port 62289
User chaofml
RemoteForward 5678 10.172.41.206:62222
# 端口说明,远程端口 5678 后面,为本地代理的端口。这样,在远程的端口,能访问到后面这个服务。
# 保活,则需要设置以下两个参数
# ServerAliveCountMax
# ServerAliveInterval
# 客户端命令
ssh dog
# 加上重试
for i in {1..100000};do ssh dog ;sleep 10;done
# 加上定时心跳
for i in {1..1000};do ssh dog "while true;do date;sleep 60;done";sleep 10;done
# 针对如上情况,如果不加心跳的话,那么,至少需要远程,定时的跟这个连接有数据交互,则连接不会断
# 远程(中转)服务器,貌似也不需要什么特别的设置。
本地端口转发
本地端口转发的意思是:跟ssh连接的方向相同。从运行ssh客户端的机器,主动建立tcp连接,访问ssh服务端的端口。
Host forwardtest
HostName 10.172.41.206
User root
Port 62222
LocalForward 58080 127.0.0.1:58080
ssh forwardtest
ssh执行命令
在脚本里面执行ssh,并执行命令。
这跟gp的命令,也有点像。1、执行1条命令。2、从标准输入中,获取到执行命令。
# 执行一条命令
ssh jobvm "
while true
do
date
sleep 1
done
"
# 从标准输入中输入
ssh -t jobvm <<EOL
while true
do
date
sleep 1
done
EOL