SSHおよび制限付きシェルを介したリモートコマンド

SSHおよび制限付きシェルを介したリモートコマンド

私はSSHサーバーで作業していますが、ユーザーが望む唯一のことは

ssh user@ip cat somefile

私の脅威軽減計画の一部は、ユーザーに限られたbashを提供することです。

例を見ましたが、chsh rbash私のサーバーでrbashが見つかりませんでした。だから「rbash」というスクリプトを作成しました。

    #!/bin/bash
    bash -r

bash -rは制限付きシェルを起動するオプションなので、このスクリプトを/ binに入れました。それから逃げた。chsh user -s /bin/rbash

これでssh user@ipサーバーに入り、制限されたシェルに自分自身を見つけることができますが、プロセスをsshしようとするとssh user@ip cat somefile停止します。debug1: sending command: cat somefile

私はこの問題を正しい方法で処理していますか? sshを介してログインしたときにcat somefileこのコマンドをリモートで操作し、制限されたシェルを維持するにはどうすればよいですか?

関連する可能性があるその他の情報

  • オペレーティングシステムFedora 29
  • SSH認証方式公開鍵

答え1

rbashの生成

マニュアルページで一番下までスクロールすると、bash次のセクションがありますRESTRICTED SHELL

bashがrbashという名前で始まる場合、または呼び出し時に-rオプションが指定されている場合、シェルは制限されます。

「rbash」という名前でbashを起動するには、シンボリックリンクを作成できますln -s /bin/bash /bin/rbash

ユーザー制限cat somefile

からman authorized_keys

command="command"
    Specifies that the command is executed whenever this key is used for
    authentication.

Authorized_key ファイルを調整できます。

command="cat somefile" KEY_TYPE KEY COMMENT

このユーザーキーの組み合わせは機能しますcat somefile

ラッパーが機能しない理由

スクリプトは実行されますが、bash -rコマンドは実行されませんcat somefileset -xeスクリプトを入力すると、何が起こるかを確認できます。

#!/bin/bash
set -xe
bash -xer

これはbash輻輳ではなく入力を待っており、2つのシェルを作成したことを示しています。プロンプトはありませんが、次のコマンドを実行できます。

$ ssh user@ip cat somefile
+ /bin/bash -r

ls 
+ ls
somefile
exit
+ exit
exit
+ exit
$

このシェルにコマンドをパイプできますが、これは良い解決策ではありません。

ssh user@ip <<< 'cat somefile'

関連情報