跳到主要内容

端口转发

本地端口转发

将本地端口映射到远程服务器上

ssh -L local_port:remote_host:remote_port username@hostname

例子

# 将本地端口3307映射到远程服务器的3306端口,通过localhost 3307 访问服务器上的mysql
ssh -o ServerAliveInterval=15 -CNg -L 3307:localhost:3306 root@hostname

# -o ServerAliveInterval=15 每隔15秒向服务器发送一个空数据包,保持连接活跃
# 将远程网络内网服务器192.168.2.10的mysql端口映射到本地3307端口,通过localhost 3307 mysql
ssh -CNg -L 3307:192.168.2.10:3306 user@203.0.113.45

反向代理

ssh简单反向代理

当外网服务器没有公网ip,或者没有静态公网ip时。需要借助另外一台公网服务器。

#在生产内网服务器上执行
ssh -f -N -T -g -R 3307:localhost:3306 user@辅助服务器公网ip

这样可以在自己电脑通过辅助服务器公网ip 3307 访问生产内网服务器上的mysql

frp内网穿透

服务端

bindPort = 7000

客户端

serverAddr = "x.x.x.x"
serverPort = 7000

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

连接命令

ssh -p 6000 user@x.x.x.x

文件同步

rsync

# 同步本地目录到远程目录
rsync -avz -e "ssh -p 22" local_directory/ user@hostname:remote_directory/
# 同步远程目录到本地目录
rsync -avz -e "ssh -p 22" user@hostname:remote_directory/ local_directory/
提示

--delete 同步删除远程目录的文件