web-dev-qa-db-ja.com

常にユーザー名/パスワードを要求するgithubを停止する方法は?

私のキーは~/.ssh/にあり、他のコンピューターでは、問題のリポジトリからプッシュおよびプルできます。
なぜ1台のコンピューターでgithubのユーザー名/パスワードを常に入力する必要があるのに、他のコンピューターでは入力しないのですか?

これを回避し、代わりにsshキーを使用するために何を変更できますか?

2
Michael Durrant

これは、認証プロトコル方式をhttpsからsshに変更することで変更できます

1つのオプションは、既存のリポジトリの名前を変更または削除してから、別の方法で「再クローン」することです。したがって、現在のリポジトリをmvingまたはrm -ringした後、クローンコマンドは次のようになります。

git clone [email protected]:user_name/repo_name.git

git config -lコマンドを使用すると、2つの方法の違いを確認できます。

Httpsの場合:

...
remote.Origin.url=https://github.com/user_name/repo_name.git
...

SSHの場合

...
[email protected]:user_name/repo_name.git
branch.master.rebase=true  # This was also created in the ssh method

...

各リポジトリの.git/configファイルの違いを確認できます。

以下の「url」の変更に注意してください。 sshにrebase = trueを追加

http

[core]
  repositoryformatversion = 0 
  filemode = true
  bare = false
  logallrefupdates = true
[remote "Origin"]
  url = https://github.com/user_name/repo_name.git
  fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
  remote = Origin
  merge = refs/heads/master

ssh

[core]
  repositoryformatversion = 0 
  filemode = true
  bare = false
  logallrefupdates = true
[remote "Origin"]
  url = [email protected]:user_name/repo_name.git
  fetch = +refs/heads/*:refs/remotes/Origin/*
[branch "master"]
  remote = Origin
  merge = refs/heads/master
  rebase = true

したがって、リポジトリ全体を「再クローン」せずに認証方法を変更するだけの場合は、プロジェクトを編集して.git/configを変更し、

  url = [email protected]_name/repo_name.git

  url = https://github.com/user_name/repo_name.git

プラス追加

rebase = true

下部の「[branch "master"]」セクション

2
Michael Durrant

最も簡単な方法は、~/.netrc次の内容のファイル:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(ここに示すとおり: https://Gist.github.com/ahoward/288502

次のように入力してパスワードが読み取られないように、このファイルのアクセス許可を閉じることもできます。

chmod 600 ~/.netrc
3
user162657

Githubとの接続ですでにsshを使用していることが確実かどうかは指定していません。他のマシンでは、githubクレデンシャルが知らないうちにキャッシュのどこかに保存されている可能性が高いです(macos/unixからlinuxシステムに切り替えたときのケースです)。

Sshタイプを使用してリモートを設定します。あなたはを使用してURLタイプを確認することができます

git remote -v

Httpsの代わりにsshが使用されるように、リモートリポジトリのURLを変更できます。

HTML URLの代わりにhttps://github.com/username/repo_name

.gitタイプのURLを使用[email protected]:username/repo_name.git

を使用して変更を行います

git remote set-url <your_branch_name> <url>