6

私の質問は

シェル コマンドとディレクトリに制限を付けて、ユーザーが自分のサーバーに ssh できるようにするにはどうすればよいですか?

私の状況

サーバーにコードをデプロイするために git を使用しています。私は 2 つのサーバーを持っています。1 つ目は製品サーバー、2 つ目は git サーバーです。

私のチームは git サーバーを使用してコードをプル/プッシュします。

製品サーバーで、git クライアントをセットアップします。バージョンを公開するときはいつでも、それを自分の git サーバー (マスターまたは他のブランチなど) にプッシュしてから、製品サーバーに SSH 接続してコードをプルします。

チームメイトとコード プル権限を共有したいが、 git以外のコマンドの実行を許可したくなく、ディレクトリのみに制限します。

制限したいディレクトリの所有者は apache:apache なので、ssh ユーザーが apache 権限で実行できると非常に便利です。

ありがとうございました、

解決済み:コマンドの制限セットでlshellを使用しました。

4

2 に答える 2

11

git ユーザーでシェルを無効にする簡単なコマンドは、/usr/bin/bash/usr/bin/git-shellに置き換えることです。/etc/password ファイルで置き換えるか、次のコマンドを使用します。

usermod -s /usr/bin/git-shell [username]

Git の公式 Web サイトのこのドキュメントを確認してください: Setting Up the Server。シェルを使用したいが、ディレクトリの使用に制限する場合の追加情報: rbash。git-shell と同じで、ユーザー シェルをそれに置き換えるだけです。

于 2013-05-22T04:50:09.623 に答える
3

強制コマンドを sshできる認証レイヤーであるgitoliteを検討する必要があります。

また、ssh 強制コマンドは、ssh を 1 つの一意のコマンドに制限するために正確に存在します (gitolite の場合、アクセス権を制御し、git コマンドのみが実行されるようにするスクリプト)。

強制命令

gitolite を使用しない場合でも、ユーザーが ssh セッションを介して実行できる操作を制御および制限するために、ssh 強制コマンドのみ (git にはまったくリンクされていません) を検討するのは興味深いことです。


別のサービスをインストールしたくなかったOP Tarzanは、別のサービス ( Ishell ) をインストールしました。これは、ssh 強制コマンドに正確に基づいています;)

于 2013-05-22T06:03:06.740 に答える