現在の問題

現在の問題

タスクシェルにアクセスせずに特定のsshユーザーをプログラムにロックするためのより良い方法(追加のソフトウェアスタックなし)はありますか?ユーザーがSSH経由でアクセスできる唯一のインターフェースであるcliプログラムを想像してください。

私のハッカーソリューション:

存在する/etc/パスワードユーザーシェルを置き換えるには、次のスクリプトを使用します。

#!/bin/bash
/bin/bash -c /usr/bin/cli
exit 1

ベストアンサー1

現在の問題

リモートユーザーがサーバーに接続するときに特定のシェルを使用できないようにロックしたいと思います。すでに発見されていますが、chsh他の解決策はローカルユーザー向けです。

解決策

~によるとユーザー muru のソリューションsshd_config、対応するオプションを使用するように編集しますForceCommand

ForceCommand を Match で使用できます。

 Match Address 10.1.0.0/16
 ForceCommand /usr/bin/[some shell]

man sshd_configから:

Match   Introduces a conditional block.  ...

Match の引数は、1 つ以上の条件付きパターンのペア、またはすべての条件に一致する単一トークン All です。利用可能な基準には、ユーザー、グループ、ホスト、ローカルアドレス、ローカルポート、およびアドレスが含まれます。

ForceCommand

クライアントおよび ~/.ssh/rc (存在する場合) が提供するすべてのコマンドを無視し、ForceCommand で指定したコマンドを強制的に実行します。コマンドは、ユーザーのログインシェルと-cオプションを使用して呼び出されます。

したがって、指定したコマンドは、-cオプションを許可する必要があるユーザーのログインシェルを使用して実行されます。コマンドが終了すると接続が閉じられるので、すべての実際の目的のために、コマンドは対応するシェルです。

設定ファイルで使用すると、ForceCommandこのオプションをサポートするシェルを強制的に使用できます-c。私も参考にしたいです。今回のサーバー障害の投稿このタスクを完了する方法の詳細をご覧ください。

結論として

完了すると、シェルとセッションが閉じるので、オプションを使用してsshd_configそれをサポートできるシェルを強制します。-c

この回答について質問や質問がある場合は、コメントを残してください。誤解を解決し、投稿を改善するためにフィードバックを送信していただきありがとうございます。必要に応じて回答を更新できます。

頑張ってください!

おすすめ記事