Ubuntu Desktop 16.10 Gnome(以前は15.10でした)をインストールしてから、ターミナルを使用してSSHキーを追加したりGPGキーをインポートしようとすると、GUIポップアップボックスが表示されてパスフレーズを要求されるという事実に悩まされています。
SSHを使用して、ターミナルで新しいエージェントを起動し、キーを追加しようとすることで、この問題を回避します。そして最後に、GUIではなくTTYでパスフレーズを要求されます。
GPGを使用して学習を始めたばかりなので、回避方法がわかりません。
これを無効にして、TTYからアクセスしたときにTTYでパスフレーズを要求する方法はありますか?
this の質問の回答を読みましたが、ubuntu 12.04についてであり、上の2つの回答はうまくいきませんでした。
SSHとGPGは、いわゆる「エージェント」を使用して復号化された秘密鍵をキャッシュするため、ユーザーはパスフレーズを常に入力する必要がありません。デフォルトでは、この目的でプログラムpinentry
を使用します。
続行する前に、コマンドラインのピン入力プログラムの例がシステムで利用可能であることを確認しましょう。 Ubuntuのリポジトリには、pinentry-curses
(永久に)とpinentry-tty
(Xenialから)がありますが、デフォルトではインストールされません。同じ名前のパッケージから取得できます。
Sudo apt install pinentry-curses
次のいずれかの方法で、ピン入力に使用されるプログラムを調整できます。
(ユーザーごと)pinentry-program
の~/.gnupg/gpg-agent.conf
をコマンドラインのピン入力プログラムに設定します。 g .:
pinentry-program /usr/bin/pinentry-curses
エージェントを再起動するか、設定を再ロードする必要があります。
gpg-connect-agent <<< RELOADAGENT
(システム全体)Ubuntuを含むすべての一般的なLinuxディストリビューションでは、デフォルトのpinentry
プログラムは、実際のピン入力プログラムへのシンボリックリンクです。このシンボリックリンクのターゲットは、update-alternatives
システムによって管理されます。これを使用して、リンクターゲットをコマンドラインピン入力プログラムに変更できます。
Sudo update-alternatives --config pinentry
これらの方法の両方の欠点は、ターミナルなしで実行されているプログラムからSSHまたはGPGが呼び出された場合、コマンドラインピンエントリを使用できないことです。 g。グラフィカルなSFTPクライアントまたはメールユーザーエージェント。より良い方法は、Xサーバーが利用可能で端末がunが利用可能な場合にのみグラフィカルピン入力プログラムを使用することです。この目的のために、適切なピンエントリプログラムに進む前に環境を分析する小さなラッパースクリプトが必要になります。
~/.local/bin/my-smart-pinentry
に次の実行可能なシェルスクリプトがあるとします。
#!/bin/sh
set -eu
# Configuration -- adjust these to your liking
PINENTRY_TERMINAL='/usr/bin/pinentry-curses'
PINENTRY_X11='/usr/bin/pinentry-x11'
# Action happens below!
if [ -n "${DISPLAY-}" -a -z "${TERM-}" ]; then
exec "$PINENTRY_X11" "$@"
else
exec "$PINENTRY_TERMINAL" "$@"
fi
このラッパーをピンエントリ「プログラム」として使用するには、上記のユーザーごとの方法を使用できます。 update-alternatives
データベースに追加 もできます。