SSHプロキシ転送を使用して設定しようとしています。展開CentOSのスクリプト。公開鍵をauthorized_keys
コンピュータのユーザーファイルにコピーしました。パスワードプロンプトなしで展開ユーザーを使用してサーバーに正常にログインできました(たとえば、展開ユーザーのパスワードはロックされていました)。~/.ssh
deploy
server
passwd -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
クライアントコンピュータ(つまり、上記のファイルの公開鍵に対応する秘密鍵を持つコンピュータ)がserver
SSH接続を開始する場合は、認証エージェント転送を有効にする必要があります。パラメータとして指定するか、通常編集するか(接続しているユーザーの場合)、次のように指定して-A
コマンドラインでこれを実行できます。ssh
/etc/ssh/ssh_config
~/.ssh/config
server
ForwardAgent yes
セキュリティ上の理由から、通常はに設定されますno
。
ssh-add
引き続き実行するserver
必要はありません。 1で終わる理由は、追加(および転送)する秘密鍵が見つからないためです。ssh-add
接続を作成するユーザーとしてクライアントコンピュータで実行している場合は、次の行が表示されます。
Identity added: /home/your_user/.ssh/id_rsa
そのファイルは~/deploy/.ssh
コンピュータでは使用できません。server
また、gitサーバーに公開鍵がインストールされていることを確認する必要があります。