it-swarm-ja.com

異なるユーザー名を介したエージェント転送(Gitと展開)

このクエリはGitに直接関連していませんが、Gitでサポートされているトランスポートの1つがSSHであり、エージェント転送を使用しようとしているため、説明を求めたいと思いました(manページで失望しました)

Capistranoを使用してソフトウェアの展開を自動化しようとしていますが、いくつかの問題点(既知のホストの事前シード、展開前など)を一時停止することができましたが、次の状況が残ります。

私のチームは、自分自身、個々のユーザーアカウントとしてサーバーにログインし、全員がdevelopersグループに属し、umask002です。上記のいずれも実際には関係ありませんが、目的は、スーパーユーザーの特権を必要とせずに、チームが常に自分たちのように機能できるようにすることです。

次のexample.comを使用してサーバー~/.ssh/configに接続します。

Host example.com
  User beaks
  ForwardAgent yes
  IdentityFile ~/.ssh/id_rsa_business

最初のログインは完全に機能し、ssh example.comは私のユーザーアカウントへの接続を開き、すべてが正常です。

問題は次のステップで発生します。

git ls-remote [email protected]:project/repository.git

これは前述のGit + SSHトランスポート層を使用しています(上記のリンクを参照)-通常は転送エージェントキーを使用する必要があります(env | grep SSH_AUTH_SOCKで存在することを確認しました)

応答は単純な「認証に失敗しました(公開鍵)もう一方の端が予期せずハングアップしました」です。共有gitとしてgithub.comに近づくと、ユーザーのエージェントが使用されていないためと思われます。ユーザー。

また、EC2の奇妙さ(セキュリティポリシーなど)を除外することはできませんが、その場合、タイムアウトまたは接続障害が予想されます。私はgithub.comを押していること、そして私のエージェントがbeaksユーザーに私のgitキーを提供していないため、彼らが私を入れていないことをかなり確信しています。

私が何かを逃したならば、どんな追加情報でも喜んで追加します。

7
Lee Hambley

Ssh-agentが実行されていることを確認するだけでは不十分です。必要なキーが存在するかどうかを確認してくださいssh-add -Lこのキーが他のホストから機能することを確認しましたか?そのシステムでssh-add -Lは何を印刷しますか?

GIT_TRACE=1 git ls-remote ...を実行することもでき、実行したsshコマンドを出力します。 gitを画像に取り込む前に、手動でsshコマンドを実行し、それを機能させることができます。

6
Seth Robertson

誰も実際にこの質問に答えなかったので、ここに来る人々は同様の質問に対する私の答えを見ることで利益を得るかもしれません。 https://superuser.com/a/1141035/3376

0
Bruno Bronosky