Posts

Showing posts from January 22, 2021

社外からSOCKS5プロキシ経由でRemoteDesktop接続

SOCKS5トンネル掘り  hirakegoma.sh #!/bin/bash while true; do echo "Connecting gw.example.com:22 ... " ssh -4ND 18888 gw.example.com -p 22 sleep 1 echo retrying done xfreerdpのラッパースクリプト 社内(≈名前解決可能)なら直接、そうでないならSOCKS5プロキシ経由でRDP接続する。 rdp.sh #!/bin/bash case "$1" in host1) user=user1 host=host1.inside.example.com ;; host2) user=user2 host=host2.inside.example.com ;; *) echo Usage $1 host_nick_name exit esac if host $host ; then echo Connecting $user@$host xfreerdp /u:$user /size:1400x900 /v:$host else echo Connecting $user@$host via SOCKS proxy xfreerdp /u:$user /size:1400x900 /v:$host /proxy:socks5://localhost:18888 fi

SSH踏み台サーバを経由して社内サーバにアクセスする

最近のリモートワークの状況下で自宅から職場のサーバにアクセスしなければならないことも多いと思います。 VPNを使ったり、OAuth付きのproxyサーバを立てたり、いろいろとやり方があると思います。今回はSSHの踏み台サーバ経由で職場内のWEBサーバにアクセスする方法について、やり方を記録して置こうと思います。 昔から、1. SSHのダイナミックフォワードでトンネルを掘る、2. ブラウザにproxy.pacを読ませて特定の(社内サーバ)URLのみにそのトンネルを使わせる、といった方法は利用していましたが、あるバージョンを境にChromeでproxy.pacファイルを読まなくなってしまい、放置していました。 今回改めてやり方を調べてみたというのが背景です。 トンネル掘り トンネルにはSSHのダイナミックフォワードを使います。例えば以下のような感じ。 hirakegoma.sh #!/bin/bash while true; do echo "Connecting gw.example.com:22 ... " ssh -4ND 18888 gw.example.com -p 22 sleep 1 echo retrying done 職場内のサーバ、xxx.inside.example.comへのアクセスを上で作ったトンネルを経由させるには、例えば以下のようにすれば良い。 proxy.pac function FindProxyForURL(url, host) { if (dnsDomainIs(host, ".inside.example.com")) if (isResolvable(host)) return "DIRECT"; else return "SOCKS5 localhost:18888"; else return "DIRECT"; } 会社内ではサーバ名前解決ができるであろうから、名前ができないときのみトンネルを通すようになっている。 Chrome起動オプション Chromeでproxy.pa