ssh端口转发

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