以前の質問と考えられる解決策については、新しい質問で他の解決策を探すようアドバイスを受けました。
(これは古いスレッドです。SSHエージェント配信は機能しますが、シェル/権限を持たないsudo -uユーザー名はどうですか?作曲家)
したがって、単純化のために、私のサーバーに(ルートに加えて)2人のユーザーしかいないとしましょう。
あるユーザー(Nalと呼びます)は時間制管理者です。これは彼がsudoersリストにあるという意味です。
他のユーザーはsftp(例:ftp over ssh;)用で、/ srv / webにあるWebサーバー上のサイトを管理します(このユーザーをWebと呼びます)。
Webはこのサイトを管理する以外に何もしないので、シェルアクセス(bin / falseに設定)と特別な権限はありません。
現在、/srv/web/websiteAのディレクトリはWebが所有しており、ここにはComposer(デフォルトでPEARを置き換えるPHP依存関係マネージャ)も活用するLaravel(PHPフレームワーク)インストールがあります。
まだ公的に使用する準備ができていないいくつかの準開発パッケージがあるので、私用のリポジトリに配置します。このリポジトリにアクセスしてgitを介してコンテンツを複製するには(すべてComposerによって自動的に行われます!)、「Web」にはSSHキーが必要です。
ローカルシステムとサーバー上で同じSSHキーセットを管理するのではなく、SSHエージェント転送を介して転送します。
これは「Nal」に非常に便利です。彼は私のプライベートストアにアクセスできます。ところで、/srv/web/websiteAでビルダーを更新しようとすると、「Web」を使用して更新する必要がありますが、その人はシェルアクセスも、SSHキーもなく、更新が失敗します。
私の現在の解決策は次のとおりです。
私はNalとしてログインしました:
cd /srv/web/websiteA
setfacl -R -m u:Web:rwx "${SSH_AUTH_SOCK%/*}"
sudo -u Web SSH_AUTH_SOCK="$SSH_AUTH_SOCK" composer update
setfacl -b "${SSH_AUTH_SOCK%/*}"
そのため、WebがアクセスできるようにSSHキーを引き渡すためにNalソケットの権限を設定し、それを更新して権限を元に戻しました。
これは効果がありますが、最善の解決策ではない可能性があります。
/srv/web/websiteAの権限を775またはそれに似たものに設定したくないので(そしてNalをwww-dataグループに追加する)、ここで質問します。
より良い解決策を考えることができますか?
答え1
さて、提案するには、秘密鍵をコピーして~/.ssh
サーバーのWebユーザーディレクトリに配置し、-p
ssh-keygenオプションを使用してWeb秘密鍵のコピーからパスワードを削除することをお勧めします。
鍵ファイルを取得する人は誰でもパスワードを知らなくても使用できるため、セキュリティが失われます。しかし、プロキシ転送や同様の設定なしでgitリポジトリを取得するにはうまくいくはずです。