2017-05-14 23 views
1

GitPythonを使用してGithubアカウントからレポを取得しようとしています。これは後でGitPython + SSHキーを使用したGitプルが機能しない

(1)私はすでにコマンドラインからgitクローンを実行しました。

ssh-keygen -t rsa -b 4096 

(3)セットアップ新しいSSHキーとしてのGithub上記#2から.PUBファイルの内容を使用して

(2)生成された新しいSSHキー。

Githubのユーザー名とパスワードを入力するよう求められます。何故ですか ?

ここは私の.gitフォルダ内の設定です。 HTTP注:// URLではなく、https://でここ

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
[remote "origin"] 
    url = http://github.com/githubuser/myrepo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 

は私のコードスニペットで

import git, os 

DIR_NAME = 'path/to/dir/with/gitfolder' 
git_ssh_identity_file = os.path.expanduser('/path/to/rsa/key') 
git_ssh_cmd = 'ssh -i %s' % git_ssh_identity_file 

with git.Git().custom_environment(GIT_SSH_COMMAND=git_ssh_cmd): 

    repo = git.Repo.init(DIR_NAME) 
    origin = repo.remote() 
    refs = origin.refs 

    for ref in refs: 
     if ref.remote_head == "master": 
      origin.pull(ref.remote_head) 
+0

秘密鍵をchmodしましたか? – Vetsin

答えて

1

注意ます。http:// URLではなく、https://4

http(s)urlを使用している限り、sshは認証のためにまったく動作しません。

あなたはSSHのURLが必要です:

[email protected]:USERNAME/OTHERREPOSITORY.git 

のHTTP URLはまだユーザー名/パスワードの認証方式に依存しています。
sshのURLだけが公開鍵/秘密鍵を使用します。

+0

sshのURLに変更しましたが、今私はこのエラーが表示されます:cmdline:git pull -v origin master stderr: 'fatal:リモートリポジトリから読み取れませんでした。 正しいアクセス権が であり、リポジトリが存在していることを確認してください。私はこの2つを順番に実行することでこれを乗り越えることができます - (1)ssh-agent -s(2)ssh-add〜/ .ssh/id_rsa。しかし、これは周囲にくっついていないようです。あと数分(または新しいセッション)、同じ2つのコマンドを実行するまで、再びアクセス許可について文句を言います。 – DancingJohn

+0

@DancingJohn秘密のssk鍵はパスフレーズで保護されていますか?実際には、パスフレーズは必要ありません。パスフレーズなしで生成することができます。 – VonC

+0

@DancingJohnただし、秘密鍵をパスフレーズで保護しておく必要があります。次に、https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh -agent /#add-ssh-ssh-agent-ssh-agentが参考になります。 https://help.github.com/articles/working-with-ssh-key-passphrases/ – VonC

関連する問題