我想使用GnuPG解密存储在远程主机(运行Linux)上的短消息,即:
但以更自动化的方式。 我只是想input一个单一的命令,脚本应该做的其余(密码(交互)input除外),即:
remote-gpg [<user>@]<host> <file-to-decrypt>
我的主要挑战是合并“ssh”和“gpg”步骤。
我正在寻找一种简单有效的方法来实现这一点:
ssh
+核心实用程序) gpg-agent
是否在服务器上运行的假设 所以,编写一个GNU expect
脚本等解决scheme是没有问题的。
动机 :一个典型的用例是使用手机(运行Android)从远程服务器获取encryption的消息(例如密码)。 希望在信息传送时closures连接,因为在电话丢失/被盗之前,您可能会忘记注销,并且在没有猜测密码(因为每次都查询密码)的情况下,窃贼无法获取更多信息。 最后,从服务器的authorized_keys文件中删除手机的SSH密钥是防止安全漏洞所需要的。
顺便说一句,用这种方法会有什么额外的安全风险(与4步手动过程相比)?
ssh -t user@host gpg -d file
我认为这不应该比这更复杂。
解密的输出将被回显给您的terminal。 -t
选项要求ssh请求一个tty,这是需要的,以便gpg可以在你的terminal上提示input密码。
这对我来说似乎没有四步法那么安全。
你想让别人为你写代码。 为你幸运,我已经有了类似的东西。
decrypt.sh:
#!/bin/bash # Get our original tty and turn off -echo stty_orig=`stty -g` stty -echo read Pass # type in your pass for gpg. gpg --passphrase="$Pass" --no-tty -d $1 # Output goes to STDOUT stty $stty_orig
通过:
ssh -t user@host 'decyrpt.sh File'
假设:您的文件位于主目录中,而decrypt.sh位于$ PATH中。