如何使ssh-add从一个文件读取密码短语?

我正在尝试在ssh-agent添encryption钥,并希望使用ssh-add从文件中读取密码。 如何可能?

如何从shell脚本自动化这个过程?

Solutions Collecting From Web of "如何使ssh-add从一个文件读取密码短语?"

根据您的发行版本和ssh-add版本,您可以使用或不使用ssh-add的-p选项,以这种方式从stdin读取密码短语:

 cat passfile | ssh-add -p keyfile 

如果这不起作用,可以使用Unix工具Expect来使交互式应用程序不交互。 你必须从你的软件包管理器安装它。

期待我为你写了一个工具。 只需将该内容复制到名为ssh-add-pass的文件中,并在其上设置可执行权限( chmod +x ssh-add-pass )即可。 您也可以将其复制到/ usr / bin或/ usr / local / bin以便从$ PATH搜索中访问。

 #!/bin/bash if [ $# -ne 2 ] ; then echo "Usage: ssh-add-pass keyfile passfile" exit 1 fi eval $(ssh-agent) pass=$(cat $2) expect << EOF spawn ssh-add $1 expect "Enter passphrase" send "$pass\r" expect eof EOF 

用法很简单: ssh-add-pass keyfile passfile

以下是不支持-p系统的一些解决方法:

 $ PASS="my_passphrase" $ install -vm700 <(echo "echo $PASS") "$PWD/ps.sh" $ cat id_rsa | SSH_ASKPASS="$PWD/ps.sh" ssh-add - && rm -v "$PWD/ps.sh" 

其中ps.sh基本上是您的脚本打印您的密码。 请参阅: man ssh-add

为了使它更安全(不要把它保存在同一个文件中),使用mktemp来生成一个随机的私人文件,使其可执行( chmod ),并确保一旦执行后将密码输出到标准输出。