GPGはあなたのGITに署名して、あなたのSSHキーを覚えています


これは私のフォローアップですWSL2 hack enabling Systemd サービス管理やセッション管理などのすべての素晴らしい機能を有効に実行します.セッション管理は、WSL 2ディストリコのほとんどのグラフィカルまたはGUIアプリケーションを使用すると、適切なWindowsベースのX410 , MobaXTerm or VCXSRV .
それで、あなたはあなたのWSL 2ディストリコで離れて働いています、そして、あなたはユビィのようなハードウェア・セキュリティ・モジュールによって後退しているあなたのPGPキーでGitコミットに署名したいです.または、SSHキーを使用して、SSHのキーを使用して、長いと難しいパスワードを覚えています.両方の活動は、Windowsベースの“エージェント”を使用して改善または有効にすることができます.PGPにはGPG 4 winのを使用できますgpg-agent そしてsshのために、我々はWindowsで出荷されるSSHエージェントを使用することができます.

インストール
私たちはgpg 4 winをインストールする必要があります.したがって、gpg 4 winをインストールするにはWingetを使います.ウィンドウで実行します.
winget.exe install gpg4win

キーの読み込み
次に、あなたの個人的なsshまたはpgpキーまたはHSMバックパブリックPGPキーをWindowsエージェントにロードします.sshキーのため、これは簡単です単にキーをコピーするC:\Users\<your-username>\.ssh\ .
PGPキーについては、[スタート]メニューを使用してKleopatraを開きます.HSMを使用している場合は、公開鍵をキーサーバーで公開キーを検索するために、ファイルまたは指紋IDとして必要とします.ファイルベースのキー選択ファイルをインポートするにはctrl+I ), ブラウザでキーファイルを見つけ、「開く」をクリックします.キーのIDを選択してキーサーバーの公開キーを検索する“ファイル”とし、“サーバー上のルックアップ”ctrl+shift+I ). キーの指紋IDを入力するダイアログで、検索をクリックし、リストから正しいキーを選択し、「インポート」をクリックします.

エージェントの自動起動
sshエージェントのために、これはPowerShellでするのが簡単です.プレスでダイアログを開きますwin+r テキストボックスにPowerShellを入力し、最後にctrl+shift+enter 特権モードで起動します.ここでPowerShellウィンドウに次のように入力します.
Set-Service ssh-agent -StartupType automatic
Start-Service ssh-agent
GPGエージェントを起動するには、新しい権限のないPowerShellウィンドウを開き、実行します.
& 'C:\Program Files (x86)\GnuPG\bin\gpg-connect-agent.exe' /bye
ただし、現在のセッションを一度だけエージェントを起動します.ログインするたびに、SSHエージェントのように特権的なパワーシェルを開くことができます.
Register-ScheduledJob -Name GPGAgent -Trigger (New-JobTrigger -AtLogOn) -RunNow -ScriptBlock {
    & "${env:ProgramFiles(x86)}/GnuPG/bin/gpg-connect-agent.exe" /bye
}

エージェントをWSL 2に結びつける
まず、あなたのディストリビューションを持っている必要がありますWSLUtilities インストール.Ubuntuでは、これらは既に存在します.あなたのディストリビューションのリンクgithubページの手順に従ってください.
次に、我々は必要socat インストールされていない場合:
sudo apt update
sudo apt install -yyq socat
さて、以下のコードをあなたのディストリビューションのファイルに置きます/etc/profile.d/wsl2-ssh-gpg-agents.sh . これはあなたのディストリビューションが自動的に/etc/profile.d :
NPIPERELAY_URL="https://github.com/NZSmartie/npiperelay/releases/download/v0.1/npiperelay.exe"

if [ -n "$WSL_DISTRO_NAME" ]; then
    APPDATA="$(wslvar appdata)"
    APPDATA="${APPDATA//\\/\/}"
    NPIPERELAY_WIN="$APPDATA/wsl2-ssh-gpg-npiperelay.exe"
    NPIPERELAY="$(wslpath "$NPIPERELAY_WIN")"

    if [ ! -f "$NPIPERELAY" ]; then
        curl -L -q -o "$NPIPERELAY" "$NPIPERELAY_URL"
    fi
    #####
    ## Autorun for the gpg-relay bridge
    ##
    SOCAT_PID_FILE=$HOME/.gnupg/socat-gpg.pid
    SOCAT_PID_FILE2=$HOME/.gnupg/socat-gpg.pid.2

    for GPG_SOCK in "$HOME/.gnupg/S.gpg-agent" "/run/user/$UID/gnupg/S.gpg-agent"; do
        if ! ss -a | grep -q "$GPG_SOCK"; then
            rm -f "$GPG_SOCK"
            mkdir -p "$(dirname "$GPG_SOCK")"
            setsid --fork socat UNIX-LISTEN:"$GPG_SOCK",fork EXEC:"$NPIPERELAY -ei -ep -s -a "'"'"$APPDATA"/gnupg/S.gpg-agent'"',nofork
        fi
    done

    #####
    ## Autorun for the ssh-relay bridge
    ##
    export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
    if ! ss -a | grep -q "$SSH_AUTH_SOCK"; then
        rm -f "$SSH_AUTH_SOCK"
        setsid --fork socat UNIX-LISTEN:"$SSH_AUTH_SOCK",fork EXEC:"$NPIPERELAY -ei -s //./pipe/openssh-ssh-agent",nofork
    fi
fi 

仕上げ
お済みです.ちょうどあなたのWSL 2セッションを再開して、Linux環境の中からWindowsで主催されるGPGとSSHエージェントを使うことができます.また、これはユービキーPGPキーのために動作します!
私はすぐにDamion GansがSystemHard Hackのためにした方法をインストールを自動化するためにこれに戻ることを望みます.