sshuttleがCentOS 7のサーバーに接続できない時の対処
sshuttle便利ですけど、最近のバージョンはサーバーにpython3が必要となったので、CentOS 7に繋ごうとすると以下のようなエラーが出るようになりました。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "assembler.py", line 18, in <module>
TypeError: module.__init__() argument 1 must be string, not unicode
client: fatal: expected server init string b'SSHUTTLE0001'; got b''
共用サーバーに勝手にPython3を入れるわけにもいかないので、クライアント側のsshuttleのバージョンを下げて対処します。
macOSだと記事執筆当時homebrewで入手できるsshuttleは1.0.4_1
ですが、これを0.78.5_2
まで下げます。
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
git checkout eed4935aa1d8c7ff3b7e63c8063249c6c046677e sshuttle.rb
brew unlink sshuttle
HOMEBREW_NO_AUTO_UPDATE=1 brew install sshuttle
これでsshuttleのバージョンが0.78.5_2
となり、CentOS 7のサーバーにも繋ぐことができるようになりますし、brew switch sshuttle 1.0.4_1
とすればバージョンを戻すこともできます。
普段は最新版を使っておいてCentOS 7のサーバーに接続するときだけ/usr/local/Cellar/sshuttle/0.78.5_2/bin/sshuttle
を直に叩くのもあり。
Linuxの場合はディストリビューションやパッケージマネージャーなどによって違うので、各自ダウングレード方法を調べてください。
困ったら以下のコミットログから旧バージョンをcloneしてくればなんとかなるはず。Readmeにありますが、setup.py
というスクリプトを用意してくれているので、簡単にインストールできると思います。
Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling. - sshuttle/sshuttle
また、古いバージョンはsshuttle --sudoers
が使えないので、もしパスワードなしで使いたい場合は以下の記事を参考に手動で設定してください。
sshを簡易VPNとして利用できるsshuttleというソフトがあります。Windowsで使えないことや、利用には管理者権限が必要なことがデメリットですが、自動でipfwやiptablesを設定してく...
コメント