LoginSignup
6
4

(ssh接続可能な)研究室のネットワークに入って論文をサクサクダウンロードする

Last updated at Posted at 2019-01-04

モチベーション

家から手元のブラウザでサクサク論文をダウンロードしたい

自宅で作業をしていて、研究室内のネットワークからならダウンロードできるのに・・・というときや、外部には公開していない学内ページ、社内ページに家からアクセスできない・・・というときがある。つまり特定のネットワーク経由でブラウザを使いたいときがある。そんな状況が前提。

色々な方法

たとえばVPNサーバーが用意されてるなら(あるいは問題が起きない形で自前で用意できるなら)、VPN につなげばいい。スタンダード。快適。解決。ここで終了。そんなのなのはないけどsshはできるときのお話。

sshできるなら、vnc serverを立ててsshでポートフォワードすればブラウザに限らずなんだってできるけど、単にブラウザで特定のページにアクセスしたいときだと、ちょっとoverkill気味だし画面転送越しにRemote側のブラウザ操作って使い勝手がたいてい悪い。Local側の使い慣れたブラウザでサクサクアクセスしたい。

「ブラウザしかつかわない」 x 「sshできる」という状況ならSOCKS

その特定のネットワークに普段sshでアクセスしているならもっとお手軽な方法がある。sshによるSOCKS Proxyを使う方法である。これを行うと、Local側のブラウザが行う通信をsshのポートフォワードでremoteを経由して行うことができる。

用意するもの

sshの環境

アクセスしたいネットワーク内の端末にsshできるようにしよう。UNIX系やmacなら環境は整っているはず。WindowsならたとえばWSLかcygwinがあればよい。

アクセスしたい端末に鍵を登録して、下が通ればOK。

$ ssh hogehoge@remote.sam.ple

ブラウザの環境

PROXYを通せればよい。どのブラウザでも問題ないはず。
windows環境の人でWSLでGUI環境を利用しているからといって、Ubuntu上のブラウザを使う必要はない。通常のwindowsアプリケーションのブラウザを使うことができる。

Chromeを使う場合、Proxy Helperエクステンションを追加するとネットワークの切り替えが楽になる。

Proxyの設定は、server typeをSOCKS5、addressを127.0.0.1、portを1080にすればよい。ここではChromeにProxy Helperをいれたとして具体的に説明する。
Proxy Helperを導入した人はアイコンを右クリックしてオプションページを開き、SOCKS5にチェックしてSOCKS Proxyを127.0.0.1にしてポートを1080にすればよい。
image.png

なお、127.0.0.1は「自分自身のネットワーク」すなわちlocal hostを意味し、指定した1080はSOCKSが通常利用するポート番号である。ポート番号は開いているなら、1025から65536の間の任意の整数でもOKだけど、普通はアサインされている番号を使う。

やってみる

SOCKS serverをたてる。

-Dオプションをつけてsshすればよい。

$ ssh -D localhost:1080 hogehoge@remote.sam.ple

-Dオプションはダイナミックポートフォワーディングするときに用いるオプションでSOCKS5をサポートしており、このssh接続がSOCKS serverの役割を担う。

localhost:1080はブラウザに設定した127.0.0.1とポート番号1080に対応している。

SOCKSプロキシを通してブラウザを使う

あとはSOCKS proxyを用いてブラウザを使えばhogehoge@remote.sam.pleのネットワーク経由でブラウザを利用できる。Proxy Helperを導入した人はアイコンを左クリックしてSOCKS PROXYを選べばよい(戻すにはDIRECTにすればよい)。

うまくできているかのチェック

動作をチェックするために自分のglobal ipを調べてみる。ブラウザからならifconfig.ipCMANなどにアクセスすれば簡単に調べられる。そういうサイトを使うのが嫌な場合はコマンドラインから、dig +short myip.opendns.com @resolver1.opendns.comそのまま打てばよい。
SOCKSがうまくいっているならプロキシを通す前後で出力されるアドレスが変わるはずである。

補足

sshのダイレクトフォワーディングにおいて-Cオプションを付けるとremoteとの通信を圧縮できる。また、sshをバックグラウンドにしたい場合は-f-Nをつけてssh -D 1080 -fCN hogehoge@remote.sam.pleとすればよい。

注意点

SOCKSプロキシを通しているときはsshしているサーバーごしに通信することになるので、必要な作業が終わったらプロキシを外すかsshを切るのをお忘れなく。

参考

How To Route Web Traffic Securely Without a VPN Using a SOCKS Tunnel

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4