我需要运行两个命令(从shell看起来像)
$ eval `ssh-agent -s`
Agent pid 8631
$ ssh-add ~/.ssh/user
注意:密钥位于/home/user/.ssh/user并且是正确的
运行就像bash脚本作为魅力:
#!/bin/bash
nohup `eval `ssh-agent -s`` >/dev/null 2>&1 &
ssh-add ~/.ssh/$user
但是从python我无法工作, ssh-agent 已启动,但 ssh-add 会返回:
无法打开与身份验证代理的连接。
import os
os.system('nohup \'eval `ssh-agent -s`\' &')
os.system('ssh-add /home/user/.ssh/user')
我试过了:
import os
system('nohup sh -c \'eval `ssh-agent -s`\' &')
同样的问题ssh-agent开始了,但不知何故我无法连接
答案 0 :(得分:1)
os.system
为每个命令启动不同的shell做了什么。而eval `ssh-agent -s`
所做的是启动一个新的ssh-agent
并在当前shell中存储与之通信所需的一些环境变量。最后,ssh-add
使用该变量访问ssh-agent
代理以向其添加新密钥。
所以你需要在同一个shell上执行这两个命令。您可以通过对os.system
的唯一调用顺序调用这两个命令来执行此操作:
os.system("eval `ssh-agent -s`; ssh-add /home/user/.ssh/user")