ssh端口转发
本地端口转发
将发送到本机某个端口的请求转发给远程ssh服务器的某个端口
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER
比如服务器elk的kibana服务,mysql服务,Druid,nacos的管理端,rancher的管理端这些肯定是不能暴露给公网访问的
ssh -L -N 15601:127.0.0.1:5601 root@remoteip 这条命令会将发送到本机15601端口的请求转发到服务器的5601端口,在本机打开浏览器访问http://localhost:15601/即可访问服务器上部署的kibana服务
-N表示不执行远程命令,只做端口转发
远程端口转发
用来将本机的服务暴露给公网,将发送给远程服务器的请求转发到本地的某个端口。
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER
做过微信小程序开发的都知道,微信小程序只能跟指定的已备案域名进行网络通信。这个时候可以把开发域名加入到白名单中,然后将开发服务器对应端口转发到本机即可。
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl ipv6only=on;
ssl_certificate /etc/nginx/ssl/dev.top.fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/dev.top.privkey.pem;
server_name dev.dev.top;
location / {
proxy_pass http://127.0.0.1:11323;
}
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt/;
log_not_found off;
}
error_log /var/log/nginx/dev.dev_error.log;
access_log /var/log/nginx/dev.dev_access.log;
}
上面的nginx配置会将请求转发到服务器的11323端口,配合ssh -N -R localhost:8083:localhost:11323 root@devserver这条命令,
当小程序请求https://dev.dev.top地址时,会访问服务器的11323端口,最后会转发到我们本机的8083端口上,开发时监听本机的8083端口即可
动态端口转发
相当于一个代理服务器,用途不可说,不可说。。。
ssh -D [LOCAL_IP:]LOCAL_PORT [USER@]SSH_SERVER