エコ$? ssh-add 実行後 1 を印刷します。

エコ$? ssh-add 実行後 1 を印刷します。

SSHプロキシ転送を使用して設定しようとしています。展開CentOSのスクリプト。公開鍵をauthorized_keysコンピュータのユーザーファイルにコピーしました。パスワードプロンプトなしで展開ユーザーを使用してサーバーに正常にログインできました(たとえば、展開ユーザーのパスワードはロックされていました)。~/.sshdeployserverpasswd -l deploy

私の.sshディレクトリにはAuthorized_keysファイルのみが含まれています。

deploy@server $ ls
authorized_keys

これで、サーバーから私のgitリポジトリにアクセスできるユーザーを展開する必要があります。解決策はSSHプロキシ転送です。サーバー上で、以下を実行してサーバーを介してリポジトリにアクセスできる必要があります。

# List SSH keys that are loaded into the agent
deploy@server $ ssh-add -l
# Make sure they key is loaded if 'ssh-add -l' didn't show anything
deploy@server $ ssh-add
deploy@server $ ssh -A [email protected] 'git ls-remote [email protected]:capistrano/rails3-bootstrap-devise-cancan.git'

問題は、ssh-addがキーをロードできないことです。

deploy@server $ exec ssh-agent bash
deploy@server $ ssh-add -l
The agent has no identities.
deploy@server $ ssh-add
deploy@server $ echo $?
=> 1

1を印刷します。これは問題が発生したことを意味します。ドキュメントにSSHエージェント配信が利用可能であることが示されているので、少し混乱しています。したがって、展開の.sshディレクトリにid_rsa(秘密鍵)が必要ないとします。ローカルシステムの公開鍵をサーバーのauthorized_keysファイルにコピーし、SSHエージェント転送を使用してgitリポジトリを認証できる必要があります。しかし、ssh-addには秘密鍵が必要なようです。ドキュメントには、サーバーに秘密鍵を生成する必要があることについてはまったく言及されていません。

私はどこで間違っていますか?

答え1

走らなければならないと思うのは間違っていると思います。ssh-add サーバー上

authorized-keysクライアントコンピュータ(つまり、上記のファイルの公開鍵に対応する秘密鍵を持つコンピュータ)がserverSSH接続を開始する場合は、認証エージェント転送を有効にする必要があります。パラメータとして指定するか、通常編集するか(接続しているユーザーの場合)、次のように指定して-Aコマンドラインでこれを実行できます。ssh/etc/ssh/ssh_config~/.ssh/configserver

ForwardAgent yes

セキュリティ上の理由から、通常はに設定されますno

ssh-add引き続き実行するserver必要はありません。 1で終わる理由は、追加(および転送)する秘密鍵が見つからないためです。ssh-add接続を作成するユーザーとしてクライアントコンピュータで実行している場合は、次の行が表示されます。

 Identity added: /home/your_user/.ssh/id_rsa

そのファイルは~/deploy/.sshコンピュータでは使用できません。server

また、gitサーバーに公開鍵がインストールされていることを確認する必要があります。

関連情報