PuTTY とシェルなしの制限付きユーザー向け SSH トンネル

PuTTY とシェルなしの制限付きユーザー向け SSH トンネル

そのため、私はしばらくの間、SSH トンネルを使用して内部サイトまたはパブリック サイトの一部へのアクセスを制限してきました。また、SSH にアクセスできるのは管理者だけだったので、標準の非ルート/sudo ユーザー アカウントを使用してきました。さて、私はプロジェクトを拡大し、地元の大学の学生を巻き込んでプロジェクトを拡大しようとしているので、学生もこれらの内部ページの一部にアクセスし始める必要があります。

プロキシ サーバーは、SELinux が有効になっている CentOS 6.4 ボックスであり、プロキシ以外のサービスは実行されません。最終的には完全な VPN を設定する予定ですが、この場合は、完全な内部ネットワーク アクセスではなく、IP ホワイトリストを使用して特定のマシンへのアクセスを許可するだけです。

/bin/falseなどのユーザーアカウントでSOCKSプロキシを設定する方法をすべて調べましたが、

A) 単一のポートまたはホストのみが転送されると想定している(この場合、ネットワーク構成でオンデマンドで変更されるVPSインスタンスのセットがあります)、または

B) PuTTY のようなものではなく、通常の SSH クライアントが使用されていること (学生全員に VM の使用を強制するか、Linux を直接インストールするようにしたいのですが、学校では学生用にエンジニアリング ハードウェアで PuTTY を使用しているため、これはあまり現実的ではありません)。

これまでにわかったことは次のとおりです。通常の ssh クライアントを使用する場合、ユーザー シェルを /bin/false に設定し、ユーザーは SOCKS プロキシを設定するときに -N コマンドを指定できますが、残念ながら PuTTY ユーザーの場合、これは機能しないようです (少なくとも私は機能させることができませんでした)。

PuTTY がデフォルトのトンネリング オプションを使用してトンネルを開く場合、ユーザーが /bin/false シェルを持っているため、ログイン時にすぐに切断されるシェルを開く必要があります。SSH 設定で「シェルまたはコマンドなし」引数を指定すると、プロキシ オプションが設定されないようです。リモート コマンドの SSH オプションでプロキシを設定しようとすると、オプションでシェルまたは他のコマンドを許可しない限り、プロキシは実行されません。

関連する質問を見つけましたが、あまり当てはまりませんでした:

PuTTY と nologin を使用して SOCKS トンネルを作成する (これは技術的には動作しますが、シェルは単に長時間実行されるスリープ コマンドであり、エスケープされるのではないかと心配です。セキュリティ上の理由から単にハングするシェルよりも、真の noshell の方が良いと思います)

https://askubuntu.com/questions/48129/ポート転送用の制限付き SSH ユーザーを作成する方法 (これは、ユーザーが ssh の実際のインストールを使用する必要があり、PuTTY などのプログラムが動作しないため機能しません)。また、Web ページにアクセスできるようにする必要がありますが、特定のポートのみを許可するのではなく、アカウントに PermitTunnel を指定するだけでよいと思います。

SSH プロキシ ユーザー向けの "noshell" (これは、SOCKS プロキシを設定するために PuTTY でコマンドを有効にする必要があるという上記の理由により、PuTTY では機能しません)

何か提案はありますか? 何か見落としている可能性もありますが、よくわかりません。

-ジム

答え1

解決策を見つけました (ここの投稿では nologin や noshell などのタグは使用されていませんが、Windows ユーザーにとっては非常に簡単なトリックですが、シェルなしでも機能するようになりました)。

この投稿の回答を使用してバッチ スクリプトを作成しました。このスクリプトでは、シェルの切断を引き起こすコマンドを実行せずに、PuTTY のデフォルト インストールを実行し、トンネルを設定できます。

Windows ユーザー向けの非常にシンプルな SSH トンネル

"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_host

これにより、PuTTYを使用するWindowsユーザーがトンネルにアクセスできるようになるため、アカウントシェルを/bin/falseとして使い続けることができます。

同様の状況にある方や、スレッドを解決するためにここに投稿しました。他の解決策があれば、ぜひ教えてください。

今は、すべてのシステムに実装している SSH プッシュベースの 2 要素認証システムでこれを機能させる必要がありますが、これは他のすべてが機能した後に取り組む作業です。

-ジム

答え2

PuTTY に次のオプションがあることを知りました。これがあなたが探しているものかもしれません: 接続->SSH->シェルまたはコマンドを起動しない

有効にすると、接続が確立され、コンソールに表示されなくなりますが、接続は維持され、トンネルは正常に動作します。お役に立てば幸いです。

関連情報