SSHパスフレーズを1回入力してください


124

アップグレード前

git clone git@...コンピューターを再起動するたびに(sshを使用して)実行していたときに、SSHパスフレーズを挿入するためのテキストボックスを含むウィンドウダイアログが表示され、[OK]で確認されました。その後、システムを次回起動するまでパスフレーズは不要になりました。

13.10へのアップグレード後

Ubuntu 13.10にアップグレードすると、そのウィンドウは表示されなくなりますが、ターミナルにメッセージが表示されます。

Enter passphrase for key '/home/username/.ssh/id_rsa': 

... Gitリポジトリを複製するたびにこれが表示されます。

どうすれば修正できますか?パスフレーズを1回だけ入力したい。


1
ssh-addそのためにはコマンドを使用する必要があると思います。試しましたか?
デビウス

2
ssh-agent bash+ を試しましたssh-add。それは数分間だけ機能します。
IonicăBizău

結局同じ問題を抱えています。OpenSSHのssh-agentとGnome Keyring Daemonの競合の可能性があります。
-devius


2
AddKeysToAgent yes.ssh / configに追加するとうまくいきます。
-xslittlegrass

回答:


138

更新:13.10からのバグのようです:

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


とにかく次のコマンドを実行すると、問題は修正されました。

直し方

次のコマンドを入力して、これを修正しました。

$ ssh-agent bash

これにより、秘密鍵を追加できる新しいbashプロセスが作成されます。新しい秘密鍵を追加するとき、パスフレーズの入力を一度だけ求められます。

その後:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... usernameユーザー名はどこですか。$USER変数を使用して同じことを行うことができます。

$ ssh-add /home/$USER/.ssh/id_rsa

または、単に~ホームディレクトリに使用します。

$ ssh-add ~/.ssh/id_rsa

そして、問題は修正されました。


48
これは問題をまったく解決しません。ターミナルを終了するまで、エージェントにIDを追加するだけです。新しいターミナルを開く場合は、ssh-addもう一度する必要があります。
デビウス

@deviusはい、バグのようです。固定私の問題上記しかし、コマンド...
IonicăBizău

3
明確にするために:この「修正」を使用すると、その端末にパスフレーズを再度入力するだけで済みます。新しいターミナルを開いた瞬間-パスフレーズを再度入力する必要があります。
ハリジェイ14

9
私は$ ssh-add /home/username/.ssh/id_rsa(なしでssh-agent bash)試してみましたが、端末を再び開いた後でも機能しました。しかし、私にとっての完全なソリューションは、この1つのstackoverflow.com/a/4246809/532252でした。マシンを再起動した後でもすべては問題ありません。
岸江14

1
ターミナルでssh-addと入力しました。ssh-agent bashに切り替えたり、id_rsaファイルを指定する必要はありません
henry74 14

39

0)短い答え

.ssh/config最初に1行を追加します。

AddKeysToAgent yes

git / ssh / ...を実行します。それが十分でない場合は、sshのバージョンを確認し、ssh-agentに次の指示が読み込まれていることを確認します。

1)opensshバージョンを確認します

まず、使用しているsshバージョンが7.2以上であることを確認します。

ssh -V

2)構成ファイルを編集します

その場合.ssh/configは、最初の1行を追加するだけです。

AddKeysToAgent yes

3)ssh-agentがすでに開いているかどうかを確認します

通常、ディストリビューションはssh-agentを自動的にロードします。確認するには、実行します

ps aux | grep -v grep | grep ssh-agent

それを含む行が表示されない場合は、次を実行してロードする必要があります。

eval $(ssh-agent)

これにより、エージェントは現在の端末でのみ有効になります。したがって、どこでも有効にするには、~/.profileファイルにこの行を追加して再起動してみてください。


11
AddKeysToAgent yes標準的なポスト2016答えは-と正確に最も近代的なユーザーは、のために約grepをしているもの。2017年半ばです。Ubuntu> = 16.04(Xenial Xerus)は現在、合理的な仮定です。現在、ほとんどのOpenSSHインストールでは、このオプションがサポートされています。この質問に対する他のすべての答えが提唱ソートのアドホックシェルスクリプトのクラッジはそう...です時代遅れ</sigh>
セシルカレー

2
これが受け入れ答えなければなりません
simernes

32

このアトラシアンのドキュメントは、Ubuntu 14.04 Server Editionの問題を修正しました。

この値を.bashrcファイルに追加するだけです:

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

そして、ログイン後、パスワードを一度だけ要求し、キャッシュします。毎回入力する必要はありません。


2
Sabayon Linuxでこの答えをうまく使用したように、これは他のディストリビューションでも機能するようです。
BH2017

1
ありがとう!このソリューションは、dbus-daemonの問題のためにgnome-keyring-daemonが機能しなかったubuntuシステムで機能しました。具体的には、「**メッセージ:dbusセッションバスに接続できませんでした:X11の$ DISPLAYなしでdbus-daemonを自動起動できません」と表示環境変数を設定した後、「**メッセージ:couldn 'dbusセッションバスに接続しません:// bin / dbus-launchは、次のエラーで異常終了しました:自動起動エラー:X11初期化に失敗しました。
user207863

1
これにはより多くの賛成票が必要であり、仮想化されたUbuntu 16.04の問題を修正します。
ニールスケレンチェス16

3
これにより、Bash for Windowsでも問題が修正されます。Bashを複数回起動してみましたが、パスフレーズが記憶されていました。まだ再起動を試みていません。
アムル

2
他のすべてのソリューションを試した後、これは私のために働いた。これはOPを解決する必要があります
ジョアン・ピメンテルフェレイラ

20

このバグの回避策は、以下を次のように追加することです~/.bashrc

eval `gnome-keyring-daemon --start`

2
GNOMEキーリングをセッションの一部にしないでください。
パベルシメルダ14年

1
あなたが話している場合は、すべてがその完璧であれば、この質問は、最初の場所で、ここですべきではない「すべき」
アンワル

1
これがに属しているかどうかはわかりません.bashrc。あなたには、いくつかのDEプロファイルファイルにそれを追加する必要がありますように見える
ドミトリーギンズブルグ

3

フィッシュシェルのユーザーは、このスクリプトを使用して同じことを行うことができます。

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end

0

私はこれを使用します:

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO

0

azure .ppkファイルを使用する場合

それをpemに変換し、簡単な手順で許可400を追加するだけです:

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>

0

Ubuntu 18.04では、セッションXが開かれるとssh-agentが開始され、ファイル/etc/X11/Xsession.optionsで管理されます。

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.