私たちは、少数の人だけがSSHを介してサーバーにアクセスできるようにするセキュリティプラットフォームを構築していますが、SSHを介してサーバーにアクセスすることなくアプリケーションを起動または停止し、必要に応じてサーバーを再起動するためのサポートが必要です。
答え1
実際の要件がサポートスタッフができない場合コマンドラインにアクセスその後、サポートが許可する固定アクションメニューを表示するスクリプトを作成し、コマンドをchsh
使用できます。このスクリプトをサポートアカウントのログインシェルとして設定する。
より確実にするには、専用のバイナリ実行可能ファイルをビルドしてメニューを表示し、スクリプトの代わりにログインシェルとして使用できます。ただし、プロトタイプの段階では、スクリプトを使用する方が簡単かもしれません。
メニュースクリプト/バイナリをユーザーのログインシェルとして使用すると、メニュースクリプト/バイナリを中断してシェルにアクセスできなくなります。メニュースクリプト/バイナリが終了した場合何らかの理由で、システムはこれをログアウトと見なすため、セッションはすぐに終了します。
これが完了すると、アカウントログインがサポートされるたびに(ローカルとSSHの両方)メニューが表示されます。メニューを終了しようとするとセッションが終了します。
またはsshd
のauthorized_keys
ファイルを使用して定義できます。必須注文:キー認証を使用してSSHセッションが開始され、そのキーに必要なコマンドが接続されているときにsshd
実行されます。コマンドのみを指定完了すると、セッションは終了します。
デフォルトでは、ユーザー用のSSHキーペアを作成しますsupport
(たとえばssh-keygen -f rebootkey_ed25519 -t ed25519
、公開キー(の内容)rebootkey_ed25519.pub
をプレフィックスとして使用して、キー行が次のように表示されるようにします。~support/.ssh/authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/bin/sudo /sbin/reboot"
authorized_keys
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/bin/sudo /sbin/reboot" ssh-ed25519 <public_key_alphabet_soup_here> [optional comment]
その後、visudo
設定を使用して、/etc/sudoers
ユーザーがパスワードプロンプトの有無にかかわらずsupport
実行できるようにします。/sbin/reboot
support ALL=(root) /sbin/reboot
または
support ALL=(root) NOPASSWD: /sbin/reboot
その後、サポートのために秘密鍵ファイルを提供し、rebootkey_ed25519
サーバーを再起動する必要がある場合は、そのファイルを実行するように指示できます。ssh -i rebootkey_ed25519 support@hostname_or_ip
rebootkey_ed25519
秘密鍵を使用してユーザーとしてログインするsupport
と、コマンドラインで指定されたすべてのリモートコマンドは無視されsshd
、そのユーザーとして実行されますssh
。使用する構成バージョンによっては、ユーザーのパスワードが必要な場合もあれば必要ではない場合もあります。何らかの理由でコマンドが終了すると、SSH セッションは終了します。sudo reboot
support
sudo
sudo
support
sudo reboot
実行する各コマンドに固有のSSHキーを使用して、特定のコマンドを使用して複数のSSHキーを定義できます。
サポートチームがSSHをまったく利用できない場合は、CGIスクリプトを実行できるWebサーバーを設定し、サポートチームが実行できるようにする各タスクのスクリプトを作成できます(必要なコマンドを実行するスクリプトを使用して、必要に応じてユーザーにsudo
許可)。NOPASSWD:
そして、そのスクリプトへのリンクとしてアクションメニューを含む簡単なWebページを作成します。
これを行うには、IPアドレスでページへのアクセスを制限するか、認証+ HTTPSを要求する必要があります。