Ideal Reality

興味の赴くままに

sshuttleをパスワードなしで利用できるようにする

sshを簡易VPNとして利用できるsshuttleというソフトがあります。

Windowsで使えないことや、利用には管理者権限が必要なことがデメリットですが、自動でipfwやiptablesを設定してくれるので、接続の際にいちいちSOCKSプロキシの設定などをしなくて済むので非常に便利です。

そこで、sshuttleのコマンドをエイリアスに登録し、パスワードなしで管理者権限を得られるようにしてやることで、即座に接続できるようにしてみましょう。

Contents
スポンサーリンク

sudoersファイルの自動生成

sshuttle 1.0.0以降にsudoersファイル自動生成機能がつきました。sshuttle --sudoersと実行するだけでsudoersファイルを自動設定してパスワードなしで使えるようにしてくれます。

/etc/sudoers.d/sshuttle_autoに以下のような内容のファイルが生成される形。

Cmnd_Alias SSHUTTLE5AC = /usr/bin/env PYTHONPATH=/usr/local/Cellar/sshuttle/1.0.4_1/libexec/lib/python3.9/site-packages /usr/local/Cellar/sshuttle/1.0.4_1/libexec/bin/python /usr/local/bin/sshuttle *

ユーザー名 ALL=NOPASSWD: SSHUTTLE5AC

バージョン 1.0.0以降を使う場合はこれでいいです。Python2系しか入ってないサーバーに接続する場合、古いバージョンのsshuttleが必要となるので、その場合は以下のように手動で設定してください。

手動で設定する方法

sshuttleがsudoで実行しているコマンドを調べる

とりあえず、sshuttleで適当なサーバーに接続させた状態でps auxwww | grep sudを実行してみてください。この記事では0.78.5_2で試してます。

root             33102   0.0  0.0  4436888   4568 s003  S+    3:08AM   0:00.01 sudo -p [local sudo] Password:  /usr/bin/env PYTHONPATH=/usr/local/Cellar/sshuttle/0.78.5_2/libexec/lib/python3.8/site-packages /usr/local/Cellar/sshuttle/0.78.5_2/libexec/bin/python3.8 /usr/local/bin/sshuttle --method auto --firewall

このような出力があるはず。

sshuttle --sudoersで自動生成される内容と見比べてみればわかると思いますが、/usr/bin/env PYTHONPATH=/usr/local/Cellar/sshuttle/0.78.5_2/libexec/lib/python3.8/site-packages /usr/local/Cellar/sshuttle/0.78.5_2/libexec/bin/python3.8 /usr/local/bin/sshuttleが今回欲しい内容です。

visudoでsudoersファイルを編集

sudo visudoでsudoersファイルを編集できるので、末尾に

## Execute sshuttle without password
Cmnd_Alias SSHUTTLE = /usr/bin/env PYTHONPATH=/usr/local/Cellar/sshuttle/0.78.5_2/libexec/lib/python3.8/site-packages /usr/local/Cellar/sshuttle/0.78.5_2/libexec/bin/python3.8 /usr/local/bin/sshuttle *
ユーザー名 ALL=NOPASSWD: SSHUTTLE

とでも追加してください。もちろんユーザー名は自分のものに変えてくださいね。

スポンサーリンク

コメント

投稿されたコメントはありません

名前

メールアドレス(任意)

コメント

関連する投稿
NO IMAGE

sshの鍵認証で躓いたら.sshディレクトリ のパーミッションを確認すべし