コマンドラインでGnomeキーリングデーモンのロックを解除します。

コマンドラインでGnomeキーリングデーモンのロックを解除します。

パスワードを直接渡して、コマンドラインからGnome Keyring Daemonのロックを解除しようとしています。 --daemonize、--login、--startのいくつかのバリエーションを試しましたが、正しく動作しませんでした。

echo $password | gnome-keyring-daemon --unlock何もロック解除せずに戻ってきましたSSH_AUTH_SOCK=/run/user/1000/keyring/ssh

基本的に私は次のようなものが欲しい:

gnome-keyring-daemon unlock --pw $password

違いがあるかどうかはわかりませんが、Manjaro i3wmバージョンを使用しているため、デスクトップ環境を使用しません。

背景:

私はKeePassXCを使用してキーリングを管理しています。 1つの欠点は、ログイン時にキーリングを自動的にロック解除できないことです。 2つの長いパスワードを入力したくないので、回避策として次のスクリプトを考えました。

  • Gnome Keyring Daemonを自動的にロック解除するにはログインしてください。
  • Gnome Keyring Daemonには、KeePassXCのPW(一部)が唯一の項目として含まれています。
  • プロンプトにパスワードの最後の文字を入力してください。
  • Gnome Keyringデーモンを倒す
  • パスワードの組み合わせを使用したKeePassXCのロック解除

今、私は再びKeePassXCをロックする反対のタスクを実行したいと思います。

  • KeePassXCでGnome Keyring DaemonのPWを入手してください。
  • KeePassXCを殺す
  • GnomeKeyringDaemon ロック解除 <- 作業できない部分です。

答え1

--unlock(現在)必要な操作を正確に実行するgnome-keyring-daemonのパラメータがあります。通常、呼び出されるとロックが解除され、悪魔化され、エコーされますSSH_AUTH_SOCK。すでに実行されている既存のデーモンがあると思われる場合は、そのパラメーターを--replace追加して新しいデーモンにシームレスに切り替えることができます。

私は定期的に公開鍵(パスワードなし)を使用してsshを介してヘッドレスUbuntu 20.0.4LTSシステムにログインしますが、開発目的で利用可能なキーリングが必要な場合があります。そのため、bash設定ファイルで次の関数を定義し、ロック解除がうまく行われました(既存のデーモンが実行されているかどうかにかかわらず)。

# Linux unlock gnome keyring
function unlock-keyring ()
{
    read -rsp "Password: " pass
    export $(echo -n "$pass" | gnome-keyring-daemon --replace --unlock)
    unset pass
}

答え2

これは非常に残酷で汚い、おそらく非常に間違ったアプローチですが、SSHを介してキーリングのロックを解除するのにしばらく困難を経験した後、次のような小さなスクリプトを思い出しました.

echo 'NOTE: This script will only work if launched via source or .' >&2
echo -n 'Login password: ' >&2
read -s _UNLOCK_PASSWORD || return
killall -q -u "$(whoami)" gnome-keyring-daemon
eval $(echo -n "${_UNLOCK_PASSWORD}" \
           | gnome-keyring-daemon --daemonize --login \
           | sed -e 's/^/export /')
unset _UNLOCK_PASSWORD
echo '' >&2

はい、電話で. ~/bin/unlock-gnome-keyringログインパスワードを入力すると、ログインキーリングがロック解除され、seahorseリモートXを介して実行している間にlibsecretアプリケーションを介してそれらを表示して使用できます。

しかし、参考にしてください。私はセキュリティの専門家ではありません。これを行うと、重大なセキュリティリスクが発生する可能性があります。メモリなどでパスワードが正しく削除されていることを確認しないため、さらに脆弱になる可能性があります。

答え3

echo -n "pass" | gnome-keyring-daemonどのコマンドの組み合わせも機能できません。私もこのsecret-toolコマンドといくつかのPythonライブラリを試しましたが、ほとんどは古く、そのどれもSeahorseで私のキーリングをロック解除していないか、GUIパスワードプロンプトをトリガーしました。

私が助けた唯一のことは、私が見つけたPythonスクリプトでした。ジタブそしてコールドバーグ、Pythonがインストールされている限り、これを行います。スクリプトをダウンロードするのは、以下を実行するのと同じくらい簡単です。

wget https://codeberg.org/umglurf/gnome-keyring-unlock/raw/branch/main/unlock.py
chmod +x unlock.py

その後、次のコマンドは「Login」という主キーリングのロックを解除します(通常は存在しますgnome-keyring-daemonが、そうでない場合はこのコマンドで生成されます)。

./unlock.py <<<PASSWORDHERE

デフォルト以外のキーリングもロック解除するには、そのキーリングの名前とパスワードを使用して「ログイン」キーリングにプロジェクトを作成するだけです。これにより、「ログイン」キーリングがロック解除されたときにキーリングを自動的にロック解除するオプションが提供されます。

答え4

一部のユースケースでは、キーリングからパスワードを削除すると便利です。したがって、ロックを解除する必要はありません。

Ubuntu 22.04:「seahorse」を検索して開きます。 「パスワード」の下にある「ログイン」を右クリックします(数回かかることがあり、最初は機能しません)。コンテキストメニューから「パスワード変更」を選択してください。現在のパスワードを入力して新しいパスワードフィールドを空白にしてください。 「暗号化されていないパスワードを保存しますか?」を受け入れます。

関連情報