私はこのビットバケットチュートリアルを使用して、gitリポジトリへのsshアクセスを提供しました: https://confluence.atlassian.com/pages/viewpage.action?pageId=270827678
しかし、今度はgitを使用するたびに、次のようにするまで権限がないと表示されます。
ssh-agent /bin/bash
&&
ssh-add ~/.ssh/id_rsa
なんでこんなことが起こっているの?ローカルマシンで簡単に実行できましたが、リモートサーバーが正常に機能していません。
更新
私がする時
ssh-agent
私はこれを手に入れます
SSH_AUTH_SOCK=/tmp/ssh-blGr6z5dJjit/agent.14183; export SSH_AUTH_SOCK;
SSH_AGENT_PID=14184; export SSH_AGENT_PID;
echo Agent pid 14184;
しかし、git fetchを実行しようとすると、次のようになります。
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
キーを追加した後でも
ssh-add ~/.ssh/bitbucket
このエラーが発生します
Could not open a connection to your authentication agent.
質問は少し不明確だったので、この答えは本当に別の質問のためかもしれません。しかし、答えはまだ他の人に役立つかもしれないので、私はそれを維持する価値があると思います。
_ssh-agent /bin/bash
_と入力すると、ssh-agentのインスタンスが開始され、そのシェルがアクティブである限り実行され続けます。デフォルトでは、そのssh-agentはそのシェルによってのみ使用され、そのシェルを閉じると終了します。
代わりに_ssh-agent
_と入力するだけの場合、エージェントはバックグラウンドで開始され、シェルを閉じても実行を続けます。 ssh-agentコマンドは、stdoutにコマンドを出力します。このコマンドを入力して、そのssh-agentの使用を開始できます。毎回これらのコマンドを入力する必要があります。
eval $(ssh-agent)
と入力すると、バックグラウンドのssh-agentを起動し、現在のシェルで使用を開始できます。ただし、_SSH_AUTH_SOCK
_環境変数をどこかに保存し、再度ログインする場合は設定する必要があります。
その背景情報が整ったので、エージェントを常に利用できるようにする方法について3つの提案があります。
eval $(ssh-agent) ; screen
を開始すると、そのエージェントはサーバー上で実行されたままになり、後でその画面に再度接続した場合でも、使用するエージェントが記憶されます。~/.bash_profile
_ファイルにコマンドを挿入して、アクティブなエージェントが存在する場合はそれを見つけ、_SSH_AUTH_SOCK
_環境変数を設定します。_~/.bash_profile
_からssh-agentを見つけるには、次のようなスクリプトを使用します。
_#!/bin/bash
for P in /tmp/ssh-*/agent.*
do
if [ -O "$P" ] && [ -O "$(dirname "$P")" ]
then
L=$(SSH_AUTH_SOCK="$P" timeout 1s ssh-add -l > >(wc -l))
case $? in
0)
echo "$L $P"
;;
1)
echo "0 $P"
;;
esac
fi &
done | sort -rn | if read N P
then
echo "SSH_AUTH_SOCK='$P'; export SSH_AUTH_SOCK"
else
ssh-agent
fi
_
これは、このeval $(find-agent)
のように_~/.bash_profile
_から呼び出すことができます(スクリプトの名前がfind-agentであると仮定します)。
SshコマンドはエラーメッセージPermission denied (publickey).
で失敗する場合がありますが、sshクライアントを誤って構成した場合は、事前に同じキーをエージェントにロードすると機能します。
デフォルトでは、ssh
とssh-add
は同じ場所からキーをロードするため、両方が必要なキーを見つけるか、どちらも見つけません。ただし、/etc/ssh/ssh_config
および~/.ssh/config
では、ssh
が使用するパスをIdentityFile
設定で上書きできます。
~/.ssh/config
に誤ったIdentityFile
設定が含まれている場合は、投稿に記載されている症状が表示されます。