[英]Cannot connect to ssh-agent with automation script in Linux
我正在尝试编写一个脚本来自动化一个rclone
过程,该过程需要通过带有私钥密码短语的公钥进行 ssh 身份验证。 新的 session 中默认不运行身份验证服务。 手动我可以
$ eval `ssh-agent`
Agent pid 2335
$ ssh-add
Enter passphrase for /home/user/.ssh/private_key:
Identity added: /home/user/.ssh/private_key (/home/user/.ssh/private_key)
然后我运行rclone
进程。 但是,如果我运行脚本,我们称它为auth
#!/bin/bash
eval `ssh-agent`
/path/to/scpw
其中scpw
是一个自动输入ssh-add
密码短语的expect
脚本,然后我得到与手动输入相同的 output :
$ /path/to/auth
Agent pid 2335
Enter passphrase for /home/user/.ssh/private_key:
Identity added: /home/user/.ssh/private_key (/home/user/.ssh/private_key)
但是当我现在尝试运行rclone
进程时,我收到错误消息
yyyy/mm/dd hh:mm:ss Failed to create file system for "computer:directory": couldn't
connect to ssh-agent: SSH agent requested but SSH_AUTH_SOCK not-specified
如果我根本没有运行ssh-add
,这与我收到的错误消息相同。 我尝试了几种变体,例如
eval `ssh-agent` && ssh-add
eval `ssh-agent` && sleep 3 && ssh-add`
eval `ssh-agent` && /path/to/scpw (where scpw waits 3 seconds to enter passphrase)
所有这些也可以手动工作,但不能在脚本中工作。 我很困惑。
您不应多次eval ssh-agent
,否则会创建多个 ssh-agent 实例。
你需要的是
nohup ssh-agent 2>/dev/null | grep -v echo > $HOME/.ssh/sh.pid
ssh-add
然后在需要 ssh-agent 的脚本中,执行以下操作:
source $HOME/.ssh/sh.pid
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.