1

Capistrano を使用するための準備方法に関するいくつかのドキュメントを調べました。その中には、Capistrano Web サイトの「認証と承認」がありました。

このコマンドを実行すると、すべてがうまくいきました

me@localhost $ ssh deploy@one-of-my-servers.com 'hostname; uptime'

しかし..このコマンドに出くわしたとき

me@localhost $ ssh -A deploy@one-of-my-servers.com 'git ls-remote git@bitbucket.org:team/application.git

私は恐ろしいものを手に入れました

Permission denied (publickey).

展開ユーザーとしてサーバーに直接 ssh し、そこからコマンドを試すことにしましたが、パスフレーズを求められました。

me@localhost:~$ ssh deployer@server.com
... bunch of logon information ...

deployer@server:~$ git ls-remote git@bitbucket.org:team/application.git
Enter passphrase for key '/home/deployer/.ssh/id_rsa':

パスフレーズを入力すると、bitbucket から応答が返ってきました。ssh-agent に ID が読み込まれている必要があり、すべてが deployer と bitbuckt に適している必要があるため、パスフレーズを求められた理由がわかりませんでした。ssh-agent を実行して ID がロードされているかどうかを確認することにしました

ssh-add -l

しかし、それから私は得ました

Could not open a connection to your authentication agent.

何?わかりました、それから私はssh-agentを開始し、これを行うことで私のアイデンティティがロードされたことを確認しました

deployer@server:~$ eval "$(ssh-agent)"
Agent pid 30113
deployer@server:~$ ssh-add -l
The agent has no identities.
deployer@server:~$ ssh-add
Enter passphrase for /home/deployer/.ssh/id_rsa: 
Identity added: /home/deployer/.ssh/id_rsa (/home/deployer/.ssh/id_rsa)
deployer@server:~$ ssh-add -l
2048 6c:87:f9:e1:71:75:0d:1c:cf:8d:d8:a8:06:fc:70:e7 /home/deployer/.ssh/id_rsa (RSA)

これで、パスフレーズを入力しなくても、bitbucket からのリモート リスティングを問題なく実行できるようになりました

deployer@server:~$ git ls-remote git@bitbucket.org:team/application.git
f25db5c4691531c8ad27882c74d9668de66f795f    HEAD
97a68f4f6cbffd0c320b37891ffdda57931146f4    refs/heads/deployer
f25db5c4691531c8ad27882c74d9668de66f795f    refs/heads/master
deployer@server:~$ 

今、私は満足してサーバーからログアウトし、ローカルマシンから再試行しました

deployer@server:~$ exit
logout
Connection to server.com closed.
me@localhost:~$ ssh deployer@server.com 'git ls-remote git@bitbucket.org:team/application.git'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

??? 私の問題があります...どこが間違っているのか分かりますか?

4

1 に答える 1

0

一度ログインして ssh-agent を開始し、鍵 (ssh-add) をエージェントにロードできます。ssh-agent の出力を何らかのファイルに保存します。

git の目的でリモートでログインする場合は、保存された情報を使用して、bashrc またはその他の起動スクリプトを介して SSH_AUTH_SOCK および SSH_AGENT_PID を設定します。新しい ssh-agent は必要ありません。すでにキーを持っているものと同じものを指す必要があります。

于 2013-09-27T06:48:50.780 に答える