PAM認証中のSSHインラインコマンドとSSHセッションの区別

PAM認証中のSSHインラインコマンドとSSHセッションの区別

SSHユーザー認証中にSSHセッションとSSHインラインコマンドを区別する方法はありますか?私はttyをチェックしようとしましたが、どちらの場合も私には同じようです。私のシナリオでは、ユーザーが(認証中に)「ssh user@hostname 'some cmd'」を実行するのを防ぎますが、ユーザーが同じユーザーアカウントを使用してSSH経由でログインできるようにする方法が必要です。

答え1

これはPAM認証中は不可能です。 pamにはsshに渡されたコマンドに関する情報はありません。 SSHサーバーのみがこのタイプを区別できます。ただし、sshにコマンド引数を渡さないと、内部的にユーザーシェル(通常bash)が実行されることを意味します。

muruが提案した以下を使ってsshd_config説明した内容を達成することができます.

Match testuser
  ForceCommand /bin/bash -il

これは、ユーザーがsshにコマンド引数を指定しても、常にユーザーに対して対話型シェルを実行します。他のコマンドを渡した場合、いくつかのメッセージを表示するには、bashの代わりに呼び出される単純なスクリプトを作成して設定されていることをSSH_ORIGINAL_COMMAND確認し、選択した適切な操作を実行する必要があります。

関連情報