SSH を使用してローカル サービスを外部アクセスにプロキシし、SSH セッション接続を維持する方法
1. 外部サーバーのnginx設定
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.認可認証
- エクストラネット サーバーで次のコマンドを実行して、公開キーを生成します。
ssh-keygen -o
- 公開キーをイントラネット サーバーにコピーし、
~/.ssh/authorized_keys
3. 対象のイントラネット サーバーへの SSH 接続
- サービスをローカルで開始し、ポート 8088 でリッスンします。
- 外部ネットワークからアクセスされたポート 10412 をローカル ポート 8088 に転送します。
nohup ssh -N -v -R 10412:127.0.0.1:8088 root@{
外部服务器的外网IP} 2>&1 &
4. セッションを維持する
- SSH セッションを維持するには、次のコマンドを追加して接続を維持します。
- ServerAliveInterval は、指定されたサーバーが接続を維持するためにパケットを送信する時間 (単位: 秒)
- ServerAliveCountMax は、サーバーとの接続を維持するための指定された最大試行回数です。
nohup ssh -N -v -o ServerAliveInterval=10 -o ServerAliveCountMax=1000 -R 10412:127.0.0.1:8088 root@{
外部服务器的外网IP} 2>&1 &