sh Cygwin GPG代理转发脚本(与Gpg4Win 3一起使用,需要openssh和ssh-pageant)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh Cygwin GPG代理转发脚本(与Gpg4Win 3一起使用,需要openssh和ssh-pageant)相关的知识,希望对你有一定的参考价值。

#!/bin/bash -e
remote="$1@$2"
echo -ne '\e]0;wait... '"$remote"'\a'
eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")

localdir="$(cygpath -u "$APPDATA")/gnupg"
extrasock="$localdir/S.gpg-agent.extra" # file containing "PORT\nNONCE"

rdir='$HOME/.gnupg' # remote prefix
rinsock="$rdir/S.gpg-agent" # listen on this socket on server
rfwdsockname="S.gpg-agent.fwd"
rfwdsock="$rdir/$rfwdsockname" # write to this socket on server
rfwdsockrelative=".gnupg/$rfwdsockname" # relative to $HOME
rnonce="$rdir/nonce/gpg-agent-nonce" # store NONCE here on server

port=$(head -n1 "$extrasock") # forward server socket to this port on client
src="UNIX-LISTEN:$rinsock,fork" # parent listens to $rinsock, forks filter
dest="UNIX-CONNECT\\:$rfwdsock" # filter writes to $rfwdsock N.B. escape colon!
# write NONCE to client, then establish bidirectional communication
filter="SYSTEM:cat \\\"$rnonce\\\" - <&3 | socat STDIO \\\"$dest\\\" >&4,fdin=3,fdout=4"
settitle="echo -ne '\e]0;gpg-agent $remote\a'"
prompt="echo 'Enter to quit:'"
cleanup='kill -9 $(jobs -p)'

# First, clear any old sockets, write NONCE, echo $HOME
rprecommand="rm -f $rinsock $rfwdsock; cat > $rnonce; echo \$HOME"
# Then establish socat magic (in background) and wait for enter, then kill socat
rcommand="socat \"$src\" \"$filter\"& $settitle; $prompt; read; $cleanup"

remotehome=$(tail -n+2 "$extrasock" | ssh "$remote" "$rprecommand")
ssh -t -R "$remotehome/$rfwdsockrelative:localhost:$port" "$remote" "$rcommand"

以上是关于sh Cygwin GPG代理转发脚本(与Gpg4Win 3一起使用,需要openssh和ssh-pageant)的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上使用 Git 的 GPG 代理上的 IPC 错误

利用Gpg4win来打造一个安全的加密文件

使用BouncyCastle Java API进行PGP签名并使用gpg4win进行验证不起作用

GPG加密windows中使用

Openstack 二次开发之:在windows 环境下编译Openstack-java-sdk

如何导出私有/秘密 ASC 密钥以解密 GPG 文件