回答:
から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