572

SSH経由でサーバーにアクセスするためのパスワードで保護された秘密鍵を持っています。

私は2台のLinux(ubuntu 10.04)マシンを持っていますが、ssh-addコマンドの動作は両方で異なります。

あるマシンでは、「ssh-add .ssh / Identity」を使用してパスワードを入力すると、キーが永続的に追加されました。つまり、コンピューターをシャットダウンして再度ログインするたびに、キーはすでに追加されています。

もう1つは、ログインするたびにキーを追加する必要があります。

私が覚えている限り、私は両方で同じことをしました。唯一の違いは、キーが永続的に追加されたキーで作成されたことです。

他のマシンにも恒久的に追加する方法を知っている人はいますか?

4

13 に答える 13

808

解決策は、キーファイルをファイルに追加することにより、キーファイルを永続的に保持すること~/.ssh/configです。

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer

〜/.sshディレクトリに'config'ファイルがない場合は、作成する必要があります。ルート権限は必要ないので、単純に:

nano ~/.ssh/config

...そして、要件に従って上記の行を入力します。

これを機能させるには、ファイルにchmod600が必要です。コマンドを使用できますchmod 600 ~/.ssh/config

コンピューター上のすべてのユーザーがキーを使用できるようにする場合は、これらの行をすべてのユーザーが/etc/ssh/ssh_configアクセスできるフォルダーに入れ、キーを入れます。

さらに、1つのホストに固有のキーを設定する場合は、〜/ .ssh/configで次の操作を実行できます。

Host github.com
    User git
    IdentityFile ~/.ssh/githubKey

これは、多くのIDがある場合に、最初に間違ったIDを試したためにサーバーが拒否しないという利点があります。特定のIDのみが試行されます。

于 2010-11-22T15:08:59.043 に答える
133

ssh-addに-Kオプションを使用して、Mac OSX(10.10)でこの問題を解決しました。

ssh-add -K ~/.ssh/your_private_key

macOS 10.12以降の場合は、 https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychainで説明されているようにssh構成を追加で編集する必要があります。

于 2015-01-20T08:25:29.370 に答える
127

これは、Mac OSXLionでの私にとって同じ問題に答えることはできませんでした。私は追加することになりました:

ssh-add ~/.ssh/id_rsa &>/dev/null

私の.zshrc(ただし、.profileも問題ありません)には、修正されたようです。

(ここで提案されているように:http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/

于 2012-08-06T16:22:14.947 に答える
45

Ubuntuクイックヒント https://help.ubuntu.com/community/QuickTipsで参照されているように、キーチェーンを追加するだけです

ssh-agentとssh-addを常に起動する代わりに、キーチェーンを使用してsshキーを管理することができます。キーチェーンをインストールするには、ここをクリックするか、Synapticを使用してコマンドラインからジョブまたはapt-getを実行します。

コマンドライン

ファイルをインストールする別の方法は、ターミナルを開いて([アプリケーション]->[アクセサリ]->[ターミナル])、次のように入力することです。

sudo apt-get install keychain

ファイルの編集

次に、次の行を${HOME}/。bashrcまたは/etc/bash.bashrcに追加する必要があります。

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
于 2016-05-16T14:32:53.863 に答える
19

@Aaronのソリューションを試しましたが、ターミナルで新しいタブを開くたびにキーが再度追加されるため、うまくいきませんでした。そこで、少し変更しました(ほとんどのキーもパスワードで保護されているため、出力を/ dev / nullに送信することはできません):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

これは、(追加されたすべてのキーを一覧表示する)の出力で特定のキーをチェックし、ssh-add -l見つからない場合は、で追加しssh-addます。

これで、初めて端末を開いたときに秘密鍵のパスワードの入力を求められ、コンピュータを再起動(またはログアウト-チェックしていません)するまで再度入力を求められません。

たくさんのキーがあるので、パフォーマンスを向上させるためにの出力をssh-add -l変数に格納します(少なくともパフォーマンスが向上すると思います:))

PS:私はLinuxを使用していて、このコードは私の~/.bashrcファイルに送られました-Mac OS Xを使用している場合は、.zshrcまたはに追加する必要があると思います.profile

編集:コメントで@Aaronが指摘しているように、.zshrcファイルはzshシェルから使用されます-したがって、それを使用していない場合(不明な場合は、bash代わりに使用している可能性があります)、このコードはファイルに移動します.bashrc

于 2014-03-08T12:54:02.517 に答える
15

Ubuntu 16.04でも同じ問題が発生しました。一部のキーは永続的に追加され、他のキーはssh-addすべてのセッションで実行する必要がありました。永続的に追加された鍵には秘密鍵と公開鍵の両方が~/.sshあり、すべてのセッションで忘れられた鍵には~/.sshdirに秘密鍵しかなかったことがわかりました。したがって、解決策は簡単です。実行する前に、秘密鍵と公開鍵の両方をにコピーする必要があります。~/.sshssh-add

PS:Gnome wikiから理解できる限り、私の方法はGnomeデスクトップ環境の一部であるgnome-keyringツールのおかげで機能します。したがって、私の方法は、GnomeまたはGnomeベースのDEを使用する場合にのみ機能するはずです。

于 2018-07-10T15:29:29.480 に答える
14

私の場合、解決策は次のとおりです。

構成ファイルのアクセス許可は600である必要があります。chmod 600 config

一般的な意見による上記のコメントで述べたように

設定ファイルの内容に触れる必要はありません。

于 2014-05-19T09:37:35.413 に答える
5

2つのid_rsaキーを使用してUbuntuを実行します。(仕事用に1つ)。ssh-addは、1つのキー(個人用のキー)を記憶し、会社を毎回忘れます。

2つの違いを確認すると、個人のキーには400の権利があり、会社のキーには600の権利があることがわかりました。(u + wを持っていた)。会社のキー(uwまたは400に設定)からユーザー書き込み権を削除すると、問題が修正されました。ssh-addは両方のキーを記憶するようになりました。

于 2017-01-24T22:12:39.353 に答える
4

「〜/ .bashrc」に次の行を追加すると、問題が解決しました。Ubuntu14.04デスクトップを使用しています。

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"
于 2015-05-13T15:55:48.843 に答える
4

これは私のために働いた。

ssh-agent /bin/sh
ssh-add /path/to/your/key
于 2017-04-02T06:47:40.240 に答える
3

Ubuntu 14.04(おそらく以前、おそらくまだ)では、コンソールさえ必要ありません:

  • seahorse「キー」を検索して見つけたものを起動または起動します
  • そこでSSHキーを作成します(またはインポートします)
    • パスフレーズを空のままにする必要はありません
    • 公開鍵をサーバー(またはそれ以上)にプッシュすることもできます
  • ssh-agentが実行され、このキーがロードされますが、ロックされます
  • を使用sshすると、エージェントを介してID(つまりキー)が取得されます
  • セッション中の最初の使用時に、パスフレーズがチェックされます
    • ログイン時にキーのロックを自動的に解除するオプションがあります
    • これは、ログイン認証がキーのパスフレーズをラップするために使用されることを意味します
  • 注:IDを転送する場合(つまり、エージェント転送)は、sshwithを呼び出す-Aか、それをデフォルトにします
    • そうしないと、後で3番目のマシンにログインするマシンでそのキーを使用して認証できません。
于 2014-11-06T19:36:53.760 に答える
3

非常に単純な^_^2つのステップ

1.yumインストールキーホルダー

2.以下のコードを.bash_profileに追加します

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
于 2016-02-03T11:45:59.757 に答える
3

Fishシェルを使用する場合は、次の関数を使用して、で、~/.config/fish/config.fishまたはの別の構成ファイルで呼び出すことができます~/.config/fish/conf.d/loadsshkeys.fishid_rsaで始まるすべてのキーをにロードしますssh-agent

# Load all ssh keys that start with "id_rsa"
function loadsshkeys
  set added_keys (ssh-add -l)
   for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
    if test ! (echo $added_keys | grep -o -e $key)
      ssh-add "$key"
    end
  end
end

# Call the function to run it.
loadsshkeys

ssh-agentターミナルを開いたときに自動を開始したい場合は、danhper/fish-ssh-agentを使用してこれを行うことができます。

于 2017-12-26T08:21:51.910 に答える