回答:
からman ssh-add
:
ssh-addは、認証エージェントssh-agent(1)に秘密鍵IDを追加します。引数なしで実行すると、ファイル〜/ .ssh / id_rsa、〜/ .ssh / id_dsa、〜/ .ssh / id_ecdsa、および〜/ .ssh / identityが追加されます。[...]
IDファイルは、ユーザー以外の誰にも読まれてはなりません。ssh-addは、他のユーザーがアクセスできるIDファイルを無視することに注意してください。
したがって、The agent has no identities.
エラーのために、おそらくそれらのファイルがないか、他のユーザーがそれらのファイルにアクセスできる可能性があります。次のコマンドを使用してこれらを確認できます。
ls -l ~/.ssh
また、ssh-add
コマンドを実行echo $?
した後、実行して前のコマンドのエラーステータスを確認します。終了ステータスが0を返した場合、コマンドは正常に実行されました。終了ステータスがゼロ以外の値を返した場合、コマンドの実行は失敗しました。
詳細についてはman ssh-add
、を参照してください。
ssh-keygen -q -t rsa -N 'password' -f ~/.ssh/id_rsa
ので、man ssh-keygenが助けてくれました、ありがとう。
ssh-add
パスフレーズを入力した後、それはによると失敗していた(、$?
しようとした1。I returing chmod 600 ~/.ssh/id_rsa*
運では。私は、と最初から新しい鍵を生成ssh-keygen
し、それが働いた。悲しいけど、少なくともそれはですOK(失敗したキーはを使用して生成されたのでssh-keygen -t rsa -b 4096 -C "your_email@example.com"
、ssh-keygen
今回は代わりに実行しただけです。)
cd ~/.ssh && ls -lah
てください)、. ssh フォルダーの読み取り/書き込み権限を確認するには 、すべてのキーを変更します)chmod 400 myKey
そのssh-add **ABSOLUTE**pathToKey
場合、絶対パスを追加しないと機能しません。次に、テストしますssh -vT git@github.com
上記の考慮事項に加えて、代替シェルを使用している場合は、ssh-agentをロードするように構成する必要がある場合があることがわかりました。例えば、Zshの中で、一つは追加する必要がありますssh-agent
にplugins
の中で.zshrc
。
この方法は、Ubuntu 17.10で最新のZshを使用するとうまく機能します
他の人は、id_ed25519
キーrsa
を使用すると、プラグインなしで機能していることを発見しました。に追加ssh-agent
した後~/.zshrc
、シェルを再起動しexec "$SHELL"
て実行します:ssh-add ~/.ssh/id_ed25519
Enter passphrase for ~/.ssh/id_ed25519:
Identity added: ~/.ssh/id_ed25519 (user@host)
ssh-add
は1でしたが0ではありませんでした。ファイルが作成されていないため、明らかに権限に問題があります。これをどのように修正できますか?ディレクトリは~/.ssh
存在します(空です)が、表示しても表示されませんls -l