ssh-addによって追加されたIDを保存して永続化


19

最近、で使用opensshできるようにセットアップしましたgit

この記事のように)設定の過程で、次のコマンドを実行しました。

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

しばらくして、ログアウトしてからログインしようとしたgit pushところ、エラーが発生しました。このエラーの解決策は、同じコマンドを再度実行することでした。

どうしたらいいか教えてください

  • ssh-agent新しいものを開始する必要がないように実行を続ける
  • 追加したキーを覚えておくと、毎回追加する必要がなくなります

明確にするために、私はzshを使用しているため、特定のbash機能が.zshrcで機能しません。


ssh-agentねじれたユースケースに適合させる前に、何がどのように機能するかを理解することから始める必要があります。
Jakuje 16

どのようなエラーが発生しましたか?
Jakuje 16

@Jakujeエラーはpubkeyの欠落に関するもので、「ssh-agentを開始しましたか?」と尋ねました。
timotree 2016

回答:


21

何のssh-agentために、どのように機能しますか?

ssh-agentメモリにし、あなたのセッションで安全に復号化されたキーを保持します。再起動/再ログインの間、復号化されたキーを保持するための合理的で安全な方法はありません。

どうすれば自動化できますか?

ssh-agentスタートアップを自動化

追加

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

あなたに~/.bashrcまたは他のスタートアップスクリプト(~/.zshrc)。

キーの自動追加

キーは、最初の使用時に自動的に追加できます。

AddKeysToAgent yes

あなたに~/.ssh/config

詳細については、を~/.ssh/config参照してくださいman ssh_config


AddKeysToAgentを有効にすると、入力eval "$(ssh-agent -s)"するたびにキーが追加されますか?
timotree 2016

エージェントが実行中で、sshこのオプションをサポートしている場合は、はい。
Jakuje

そのときの開始を自動化する方法を明確にしていただけませんssh-agentか?
timotree 2016

基本的に、他の回答で説明したように。[ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje

それはzshで動作しますか?
timotree 2016

3

これを追加 ~/.bashrc

これは、端末なしで別のセッションを開くと、ssh-agentが自動的に開始されることを意味します

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

エージェントに追加するキーが必要な場合は、これも追加します

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi

1
これは良い答えでしたが、コマンドの機能を説明していません。
timotree 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.