使用python将用户的ssh密钥发布到github

时间:2013-05-20 23:30:38

标签: python github github-api

我正在尝试自动设置git系统,我陷入了一个我想使用github api添加用户密钥的过程。这就是我到目前为止。

USER_SSH_PUB=glob.glob(os.path.expanduser('~/.ssh/temp.k.pub')) 
user_Ssh_Pub_Key_File=open(USER_SSH_PUB[0],"r")
GITHUB_URL='https://api.github.com/users/abc/keys'
key_Data=urllib.urlencode({"title":"abcd","key":user_Ssh_Pub_Key_File.read()})                            
request=urllib2.Request(GITHUB_URL,key_Data)                                                         response=urllib2.urlopen(request)                                                                     |
print response.read() 

当我这样做时,我得到了404。有人这样做过吗?

1 个答案:

答案 0 :(得分:1)

我假设您想要使用公钥并将其添加到用户的密钥集中,即通过this API

问题是您只能为经过身份验证的用户执行此操作,您不能代表其他用户执行此操作。因此,GITHUB_URL必须为https://api.github.com/user/keys,您必须以用户abcd进行身份验证才能执行此操作。

我认为使用urllib2的API没有任何python包装器可以工作(好),但是有一些列出的here包括mine,它是可以安装pip的。使用我的库,您的代码将如下所示:

from github3 import login

g = login('abcd', password)
with open('~/.ssh/temp.k.pub', 'r') as fd:
    key = g.create_key('abcd', fd)

print("Created {0}".format(key.title))

还有其他流行的包装,如pygithub3,但我不熟悉它们。