6

永遠に残る識別ファイルに対してssh - addを実行できますか? -L を追加)

問題は、Amazon サーバーに github にレポがあるさまざまなプロジェクトがあることです。

これで、ユーザー A はプロジェクト A に対してのみアクセス権を持ち、B はプロジェクト Bに対してのみアクセス権を持って いるというユーザーに基づいて、レポのそれぞれにアクセス権があります。

そのアクセス権を (github で) 設定すると、各ユーザーはそれぞれのプロジェクトに対してのみ git 操作 (git fetch、git push など) を実行できるようになります (これが必要です)。

今私が欲しいのは、ユーザーがそれぞれのプロジェクトで git 操作を実行するときです。ssh-agentがアカウント内のすべての ssh-keys を取得し、その特定のユーザーに一致するものを探します

ノート

各 ssh-key にはフレーズ (所有する各ユーザーが知っている一意の秘密) が関連付けられており、git 関数を実行するときに入力するように求められます。

これを達成するために私たちは

ssh-add /root/.ssh/A

また

ssh-add /root/.ssh/B

ただし、前述のように、これはアクティブな ssh-sessionの間のみにとどまり、終了するか、サーバーとの新しいssh セッションを作成すると、ssh-add 情報が失われます。ssh-add -Lを実行することで見つけることができます

また、この質問で説明されているように、.ssh/config で IdentityFile を定義しようとしました。

このようなもの

Host github.com
        Hostname github.com
        User git
        IdentityFile /root/.ssh/A

Host github.com
        Hostname github.com
        User git
        IdentityFile /root/.ssh/B

これは1人のユーザーに対してのみ機能します(「A」で機能する場合と機能しない場合があります。「B」でも同じです)

この隔離は達成できるのでしょうか、それとも私は少し野心的すぎるように聞こえますか?

ありがとう

4

1 に答える 1

7

IdentityFile の編集に非常に近づいています。ただし、 IdentityFile にリストされている固有のホスト名が必要です。どちらの場合もホスト名として github.com を使用したため、github.com に接続しようとすると、どちらを使用すればよいかわかりません。

同様の設定があります。5 人のユーザーがいて、全員が 1 つのアカウントにログインしています。ただし、Github はそれぞれ独自の ssh キーを使用してそれらを確認する必要があるため、5 つのキーがあります。これを回避する秘訣は、ファイルを次のようにすることです

Host UserA_github
        Hostname github.com
        User git
        IdentityFile /root/.ssh/A

Host UserB_github
        Hostname github.com
        User git
        IdentityFile /root/.ssh/B

UserBが git 関連の何かをしたいときはいつでも(たとえば、リポジトリの 1 つを複製する)、実行されます...

git clone UserB_github:UserB/MyRepo

または似たようなもの。これは、彼らが入ったかのように振る舞います...

git clone github.com:UserB/MyRepo 

ただし、適切な IdentityFile/秘密鍵を使用します。

私のソリューションでは永続化を使用していないことは理解していますがssh-add、これにより、必要なパフォーマンスが得られると思います。残念ながら、ユーザーはトランザクションを実行するたびにパスフレーズを入力する必要があります。

于 2012-06-05T20:19:19.933 に答える