gitやGitoliteなどの一部のユーティリティはファイルを変更してSSHキーが実行できるコマンドを制限することがありますauthorized_key
。
たとえば、Gitoliteの変更はファイル内のエントリをauthorized_keys
次のように変更します。
command="/usr/bin/gitolite/src/gitolite-shell username",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
このコマンドは受信側で実行されるため、SSH接続を介して着信データストリームを処理する必要があります。
このようなコマンドは、着信データストリームを読み取り、それを使用するディレクトリやプロセスに送信するなど、着信データをどのように処理しますか?
答え1
これは、SSHで実行される他のコマンドのように実行されます。 SSH は、開始されたコマンドに対してクライアントの stdin/stdout/stderr をサーバーの stdin/stdout/stderr に接続します。その後、コマンドは通常どおりstdinからデータを読み込み、通常どおりstdoutとstderrを介してデータを送信できます。
制限してもauthorized_keys
違いはありません。ただし、質問に提供されている特定のケースでは、TTY割り当てが無効になる可能性があるため(ポート転送など)、TTYを要求してもTTYは生成されません。
逃げても構わない
ssh some-server /usr/bin/gitolite/src/gitolite-shell username
この場合、サーバーはユーザーが指定した内容を無視して実行されますauthorized_keys
。