UbuntuにSSH-ADDを使用して秘密キーを永久に追加する方法は? [閉まっている
質問
SSHを介してサーバーにアクセスするためのパスワードで保護された秘密キーがあります。
2つのLinux(Ubuntu 10.04)マシンがあり、SSH-ADDコマンドの動作は両方で異なります。
1つのマシンでは、「SSH-ADD .SSH/ID」を使用してパスワードを入力すると、キーが永続的に追加されました。つまり、コンピューターをシャットダウンして再びログインするたびに、キーはすでに追加されています。
もう1つは、ログインするたびにキーを追加する必要があります。
私が覚えている限り、私は両方で同じことをしました。唯一の違いは、キーが永続的に追加されたものに作成されたことです。
他のマシンに永久に追加する方法を知っている人はいますか?
解決
解決策は、キーファイルを永久に保持するように強制することです。 ~/.ssh/config
ファイル:
IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer
〜/.sshディレクトリに「構成」ファイルがない場合は、作成する必要があります。ルートの権利は必要ありませんので、単純に:
nano ~/.ssh/config
...そして、要件に従って上記の行を入力します。
これを機能させるには、ファイルがCHMOD 600を使用する必要があります。コマンドを使用できます chmod 600 ~/.ssh/config
.
コンピューター上のすべてのユーザーにキーを使用してもらいたい場合 /etc/ssh/ssh_config
そして、すべての人がアクセスできるフォルダー内のキー。
さらに、1つのホストに固有のキーを設定する場合は、〜/.ssh/configで以下を実行できます。
Host github.com
User git
IdentityFile ~/.ssh/githubKey
これは、最初に間違ったアイデンティティを試したため、サーバーがあなたを拒否しないという多くのアイデンティティを持っている場合に利点があります。特定のIDのみが試されます。
他のヒント
これは、Mac OS X Lionの下で私にとって同じ問題に答えませんでした。私は追加することになりました:
ssh-add ~/.ssh/id_rsa &>/dev/null
私の.zshrc(しかし、.profileも問題ありません)に、それを修正したようです。
(ここで示唆しているように: http://geek.michaelgrace.org/2011/09/permannely-add-ssh-key-ssh-add/ )
SSH -ADDの-Kオプションを使用して、Mac OSX(10.10)でその問題を解決しました。
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を常に開始する代わりに、キーチェーンを使用してSSHキーを管理することができます。キーチェーンをインストールするには、ここをクリックするか、シナプスを使用してジョブを実行したり、コマンドラインからapt-getを使用したりできます。
コマンドライン
ファイルをインストールする別の方法は、端末(アプリケーション - >アクセサリ - >端末)を開くことです。
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
パフォーマンスを改善する変数で(少なくともパフォーマンスが向上すると思います:))
PS:私はLinuxを使用していて、このコードは私に行きました ~/.bashrc
ファイル - Mac OS Xを使用している場合、私はあなたがそれを追加する必要があると思います .zshrc
また .profile
編集:@aaronがコメントで指摘したように、 .zshrc
ファイルはから使用されます zsh
シェル - だからあなたがそれを使用していないなら(あなたが確信していないなら、おそらくあなたは使用しています bash
代わりに)、このコードはあなたに移動する必要があります .bashrc
ファイル。
私の場合、解決策は次のとおりです。
構成ファイルの権限は600でなければなりません。
chmod 600 config
Generalopinionによる上記のコメントで述べたように
構成ファイルの内容をタッチする必要はありません。
Ubuntu 16.04で同じ問題がありました。一部のキーは永続的に追加されました。 ssh-add
すべてのセッションで。私は、永久に追加されたキーには、プライベートキーと公開鍵の両方があることがわかりました。 ~/.ssh
そして、すべてのセッションで忘れられたキーには、プライベートキーしかありませんでした ~/.ssh
監督。そのため、解決策は簡単です。コピーする必要があります 両方とも プライベートキーと公開鍵 ~/.ssh
実行する前 ssh-add
.
Ubuntu 14.04(多分早い、おそらくまだ)では、コンソールさえ必要ありません。
- 始める
seahorse
または、「キー」の検索を見つけたものを起動します - そこにSSHキーを作成する(またはインポート)
- パスフレーズを空にしたままにする必要はありません
- 公開鍵をサーバー(またはそれ以上)に押し込むこともあなたに提供されます
- あなたはssh-agentランニングになり、このキーはロードされますが、ロックされています
- 使用
ssh
エージェントを介してアイデンティティ(つまりキー)をピックアップします - セッション中に最初に使用すると、パスフレーズがチェックされます
- ログイン時にキーのロックを自動的に解除するオプションがあります
- これは、ログイン認証がキーのパスフレーズをラップするために使用されることを意味します
- 注:アイデンティティを転送したい場合(つまり、エージェントフォード)
ssh
と-A
または、それをデフォルトにします- それ以外の場合は、そのキーで認証できません マシンでは、後で3番目のマシンにログインします
2つのID_RSAキーを使用してUbuntuを実行します。 (仕事のための1つの個人)。 SSH-ADDは、1つのキー(個人的なもの)を覚えており、毎回会社を忘れてしまいます。
2人の違いをチェックアウトすると、私の個人的な鍵には400の権利がありましたが、会社は600の権利を持っていました。 (u+wを持っていた)。ユーザーの削除会社キー(UWまたは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)"
非常にシンプル ^ _ ^ 2つのステップ
1.yumキーチェーンをインストールします
2.以下のコードを.bash_profileに追加します
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
これは私のために働いた。
ssh-agent /bin/sh
ssh-add /path/to/your/key
魚のシェルを使用している場合は、次の関数を使用して、〜/.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 これをする。