SSH経由でサーバーにアクセスするためのパスワードで保護された秘密鍵があります。
私は2つのlinux(ubuntu 10.04)マシンを持っています、そしてssh-addコマンドの振る舞いはそれらの両方で異なります。
あるマシンでは、「ssh-add .ssh/identity」を使用してパスワードを入力すると、キーが恒久的に追加されました。つまり、コンピュータをシャットダウンして再度ログインするたびに、キーはすでに追加されます。
もう1つの方法では、ログインするたびにキーを追加する必要があります。
私が覚えている限りでは、私は両方で同じことをしました。唯一の違いは、キーが恒久的に追加されたものの上に作成されたということです。
他のマシンにも恒久的に追加する方法を誰かが知っていますか?
解決策は、キーファイルを~/.ssh/config
ファイルに追加することで、キーファイルを永続的に保持することです。
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
〜/ .sshディレクトリに 'config'ファイルがない場合は、作成する必要があります。 root権限を必要としないので、単純に次のようにします。
nano ~/.ssh/config
...そしてあなたの要求に従って上記の行を入力してください。
これが機能するには、ファイルにchmod 600が必要です。コマンドchmod 600 ~/.ssh/config
を使用できます。
あなたがコンピュータ上のすべてのユーザにキーを使わせたい場合は、これらの行を/etc/ssh/ssh_config
に入れ、キーをallにアクセス可能なフォルダに入れてください。
さらに、1つのホストに固有のキーを設定したい場合は、〜/ .ssh/configで次のことを実行できます。
Host github
HostName github.com
User git
IdentityFile ~/.ssh/githubKey
@ github.comではなく@githubでクローンを作成する必要がありますが、これにはこのキーのみが試行されるという利点があります。
これは私にとってMac OS X Lionの下の同じ問題には答えなかった。追加しました:
ssh-add ~/.ssh/id_rsa &>/dev/null
私の.zshrcに(しかし、.profileも大丈夫だろう)、それはそれを修正したようだ。
(ここで示唆されるように: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
私はMac OSX(10.10)でssh-addに-Kオプションを使うことでこの問題を解決しました。
ssh-add -K ~/.ssh/your_private_key
MacOS 10.12以降では、ここで説明しているようにsshの設定を追加編集する必要があります。 https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
Ubuntuのクイックヒント https://help.ubuntu.com/community/QuickTips で参照されているように、キーチェーンを追加するだけです。
何
Ssh-agentとssh-addを常時起動する代わりに、keychainを使ってsshキーを管理することが可能です。キーチェーンをインストールするには、ここをクリックするか、Synapticを使用してジョブを実行するか、コマンドラインからapt-getを実行します。
コマンドライン
ファイルをインストールするもう1つの方法は、端末を開き(アプリケーション - >アクセサリ - >端末)、次のように入力することです。
Sudo apt-get install keychain
ファイルを編集
その後、$ {HOME} /。bashrcまたは/etc/bash.bashrcに次の行を追加してください。
keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
@ 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
の出力を変数に格納します(少なくともパフォーマンスを向上させると思います:)
シモンズ:私はLinux上にいて、このコードは私の~/.bashrc
ファイルに行きました - あなたがMac OS X上にいるならば、私はあなたがそれを.zshrc
または.profile
に追加するべきであると思います
編集:コメントで@Aaronによって指摘されているように、.zshrc
ファイルはzsh
Shellから使用されています。 bash
ではなく、このコードはあなたの.bashrc
ファイルに行くべきです。
私の場合、解決策は次のとおりです。
設定ファイルのパーミッションは600です。
chmod 600 config
上記のコメントでgeneralopinionによって述べられているように
設定ファイルの内容に触れる必要はありません。
私はUbuntu 16.04で同じ問題を抱えていました:いくつかのキーは恒久的に追加されました、他のために私はすべてのセッションでssh-add
を実行しなければなりませんでした。私は、恒久的に追加されたキーはプライベートキーとパブリックキーの両方が~/.ssh
にあり、すべてのセッションで忘れられていたキーはプライベートキーしか~/.ssh
ディレクトリにないことがわかりました。そのため、解決方法は簡単です。~/.ssh
を実行する前に、 both プライベートキーと公開キーをssh-add
にコピーする必要があります。
Ubuntu 14.04(おそらく以前、おそらくまだ)ではコンソールさえも必要ありません。
seahorse
を起動するか、 "key"を検索しているものを起動してください。ssh
を使うことはエージェントを通してアイデンティティ(すなわちキー)を拾います-A
を付けてあなたのssh
を起動するかそれをデフォルトにしてください 私は2つのid_rsaキーを使ってUbuntuを実行します。 (仕事のための個人的なもの)。 ssh-addは一つの鍵(個人用の鍵)を覚えていて毎回会社のものを忘れてしまうでしょう。
2つの違いを調べてみると、私の個人キーには400の権利があり、会社のキーには600の権利がありました。 (u + wがありました)会社のキーからユーザーの書き込み権限を削除する(u-wまたは400に設定)と、問題が解決しました。 ssh-addは両方のキーを覚えています。
"〜/ .bashrc"に以下の行を追加することで問題は解決しました。 Ubuntu 14.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)"
これは私のために働きました。
ssh-agent /bin/sh
ssh-add /path/to/your/key
とても簡単^ _ ^ 2つのステップ
1.yumインストールキーチェーン
2.以下のコードを.bash_profileに追加
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
Fish Shellを使っている人は、以下の関数を使って〜/ .config/fish/config.fishでそれを呼び出すことができます。 id_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
を自動的に起動させたい場合は、 tuvistavie/fish-ssh-agent を使用してこれを実行できます。