私は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 somefile
。set -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'