无法使用带有标识文件的子进程进行SSH

时间:2016-03-28 12:51:59

标签: python ssh subprocess

我正在尝试使用以下命令使用python子进程ssh:

php artisan key:generate

我收到错误:

subprocess.Popen(["ssh", "-i %s/.ssh/anotherIdentity" % os.path.expanduser("~"), " user@%s" % host, command], 
shell=False, 
stdout=subprocess.PIPE, 
stderr=subprocess.PIPE)

身份文件出现在该位置, 这背后的原因可能是什么?

Python版本:Mac中的2.7.10

1 个答案:

答案 0 :(得分:2)

中有一个额外的空间
subprocess.Popen(["ssh", "-i %s/.ssh/anotherIdentity" % os.path.expanduser("~"), " user@%s" % host, command], 

所以如果我们在-i之后删除多余的空格,它就会起作用。正确用法:

subprocess.Popen(["ssh", "-i%s/.ssh/anotherIdentity" % os.path.expanduser("~"), " user@%s" % host, command], 

或将-i和参数分隔为不同的参数

subprocess.Popen(["ssh", "-i", "%s/.ssh/anotherIdentity" % os.path.expanduser("~"), " user@%s" % host, command],