Cómo usar ssh para enviar servicios locales al acceso externo y mantener la conectividad de la sesión SSH
1. Configuración nginx del servidor externo
server {
listen localhost:80;
server_name _;
root /usr/share/nginx/html;
# 重要:将请求转发到本地服务
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://127.0.0.1:10412;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
}
}
2. Autenticación de autorización
- Ejecute el siguiente comando en el servidor de extranet para generar la clave pública:
ssh-keygen -o
- Copie la clave pública al servidor de intranet y agréguela a
~/.ssh/authorized_keys
3. Conexión SSH al servidor de intranet de destino
- Inicie el servicio localmente y escuche en el puerto 8088
- Se accede al puerto de reenvío 10412 desde la red externa al puerto local 8088
nohup ssh -N -v -R 10412:127.0.0.1:8088 root@{
外部服务器的外网IP} 2>&1 &
4. Mantenga la sesión
- Para mantener la sesión SSH, agregue el siguiente comando para mantener la conexión
- ServerAliveInterval es el tiempo que tarda el servidor especificado en enviar un paquete para mantener la conexión (unidad: segundo)
- ServerAliveCountMax es el número máximo especificado de intentos para mantener una conexión con el servidor
nohup ssh -N -v -o ServerAliveInterval=10 -o ServerAliveCountMax=1000 -R 10412:127.0.0.1:8088 root@{
外部服务器的外网IP} 2>&1 &