web-dev-qa-db-ja.com

Ubuntuセッション中にsshパスフレーズを記憶させる方法は?

Gnomeターミナルを開いてSSH経由でサーバーに接続すると、GUIではなくターミナルでテキストプロンプトでパスフレーズを要求されます。さらに悪いことに、このパスフレーズはUbuntuセッションの間メモリに保存されません。 。

それどころか、ThunderbirdのEnigmailでPGPキーを使用し、GUIを使用してセッションごとに1回だけパスフレーズを入力する必要があります。

Seahorse-daemon、gpg-agent、およびssh-agentの3つのエージェントをインストールして実行しているようですが、うまく動作していないようです。私もgnome-keyringを実行しています。これらのプログラムのそれぞれが何をすべきか理解していない。

ssh-agentは、システムによって「/ usr/bin/gpg-agent」を最初のコマンド引数として実行されますが、これが何を意味するのか理解できません。

Sshキーに使用するエージェントを設定するにはどうすればよいですか?

3
YS1

「設定」->「パスワードとキー」でGUIユーティリティを使用しません

キーチェーンをインストールしました。

Sudo apt-get install keychain

Bashを実行している場合は、.bash_profileにいくつかのコマンドを追加する必要があります。bash_profileがない場合は、ホームフォルダーに作成します。次の行を追加します。

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

仕事の日の始めにログインします。ターミナルを開くと、パスフレーズの入力を一度求められます。他のすべての新しい端末と接続については、パスフレーズの再入力は求められません。

2
walpha

実行ssh-addターミナルで、プロンプトが表示されたらパスフレーズを入力します。これが機能する場合、同じXセッションで実行されているすべての端末およびアプリケーションで、プロンプトなしでsshキーへの以降のすべてのアクセスが機能するはずです。

1
Robie Basak

私は多くのテストと調査を行って、ほとんどのドキュメントが古くなっていることを発見しました。ここに、それを機能させるためのシンプルで効果的な方法を示します。

.bashrcファイルの最後に、これを次のように配置します。

# use a tty for gpg
# solves error: "gpg: signing failed: Inappropriate ioctl for device"
GPG_TTY=$(tty)
export GPG_TTY
# Start the gpg-agent if not already running
if ! pgrep -x -u "${USER}" gpg-agent >/dev/null 2>&1; then
    gpg-connect-agent /bye >/dev/null 2>&1
    gpg-connect-agent updatestartuptty /bye >/dev/null
fi
# Set SSH to use gpg-agent
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
    export SSH_AUTH_SOCK="${HOME}/.gnupg/S.gpg-agent.ssh"
fi
# add alias for ssh to update the tty
alias ssh="gpg-connect-agent updatestartuptty /bye >/dev/null; ssh"

これにより、誰かが古い文書を手直しするという頭痛の種を救うことを願っています。

0
Pete