web-dev-qa-db-ja.com

間違ったユーザーとしてリモートGitHubリポジトリにプッシュするGit

作業用のGitHubアカウントと個人アカウントを持っています。最初にテストプロジェクトに個人用のものを使用し、次に同じコンピューター上の他のアカウントでリポジトリを移動しました。

個人用アカウントに新しいリポジトリを再度作成したいので、グローバルとローカルを変更しましたuser.name、および新しいsshキーペアを実行し、GitHubセットアップページに入力しました。次に、ディレクトリを設定します

git init
git remote add Origin <url>
git Push Origin

しかし、それは今私に教えてくれます

エラー:personaluser/newrepo.gitへのアクセスが拒否されました

他のアカウントがこのアカウントにどのように接続されているのかわかりません。 .git/configworkusername関連のものを表示しません。

Windows 10を使用している場合は、Rajanの答えを読むのに時間をかけてください。

74
Raz Faz

これは、私の現在の仕事のセットアップと非常によく似ています。すでに別のssh-keysを設定しているようですので、~/.ssh/configファイルを作成して、次のような情報を入力する必要があります。

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

すべてのプロパティは一目瞭然ですが、IdentitiesOnlyプロパティはそうです。私はそれが何のためであるかを説明しようとはしませんが、それは私の現在のセットアップにあり、うまく機能します。

Host URLは正しいユーザー設定を取得するための単なるポインタであり、ターゲットHostName urlにファイルを正しく取得することには何の影響もありません。

Origin(または一般的にremote)のURLがユーザー名に応じてそれぞれのリポジトリの正しいHost urlと一致することを確認する必要があります。既存の個人リポジトリが既にある場合は、テキストエディターでそのリポジトリの.git/configファイルを編集できます。

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:PERSONAL_GITHUB_USERNAME/project.git

または、コマンドラインで実行します:

git remote set-url Origin [email protected]:PERSONAL_GITHUB_USERNAME/project.git

あなたの仕事と同じように:

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:your_work_organization/project.git

または、コマンドライン経由:

git remote set-url Origin [email protected]:your_work_organization/project.git

もちろん、~/.ssh/configファイルにHost URLの1つをいつでも設定できます。

Host github.com

work.github.comのみを使用して、構成の関係を簡単に確認しました。

これらがすべて設定されると、それぞれのリモートにプッシュできるようになります。

編集

私が自分自身に気づいたことの1つは、user.email値にグローバルgit設定値を設定した場合(そしてuser.nameも異なる値を送信すると推測する)、gitはそのメールユーザーとしてコミットを表示します。これを回避するには、ローカルリポジトリ内のグローバルgit構成設定をオーバーライドできます。

$ git config user.name "John Doe"
$ git config user.email [email protected]

これで、そのリポジトリの正しいユーザーとしてコミットが送信されます。

66
hellatan

[コントロールパネル]> [ユーザーアカウント]> [資格情報マネージャー]> [汎用資格情報]に移動します。

git認証情報を削除します。次に、git Pushを実行します。これにより、gitクレデンシャルの入力が求められます。正しい資格情報を入力してください。

40
Rajan Patil

Sshではなくhttpsに切り替えることもできます。 httpsを使用する場合、.git/config設定が尊重されます。そのため、.git/configで以下を変更します。

url = [email protected]:USER/PROJECT.git

url = https://[email protected]/USER/PROJECT.git

(これらの値はgitプロジェクトページにあり、SSHおよびHTTPボタンをクリックして新しい値を取得します);

35
yuttadhammo

githubは、gitの設定ではなく、表示されるsshキーによってユーザーを識別します。

したがって、個人アカウントとしてプッシュする場合、またはその逆の場合、仕事用アカウントのsshキーがキーリングにないことを確認する必要があります。つかいます ssh-add -lはキーリングにどのキーが含まれているかを判断し、ssh-add -d keyfileキーリングからキーを削除します。

また、~/.ssh/config特定のsshキーをgithubに提示するように設定している場合。最後に、同じssh公開キーを持つ2つのアカウントをgithubがどのように処理するかわかりません。したがって、それを行わないようにしてください。

33
Walter Mundt

新しいgithubアカウントを作成したため、最近同じ問題が発生しました。上記の回答を試しましたが、役に立ちませんでした。次に、Keychain Accessからgithubを削除することについての投稿を見ました(macを使用している場合のみ)。私がgit Pushを実行すると、ユーザー名とパスワードが要求され、機能しました!

12
flipjs.io

同じ問題がありました。 GitHubには同じSSHキーを使用する2つのアカウントがあり、GitHubはデフォルトで、レポジトリへのアクセス許可のない間違ったアカウントを使用していました。すべてを使用しなかったアカウントからSSHキーを削除しました。

GitHubが自分自身を認証しているアカウントをテストできます:

ssh -T [email protected]

私にとって、これは元々間違ったユーザー名を示していましたが、そのアカウントから重複したSSHキーを削除した後、正しいユーザー名を示し、私のリポジトリへのプルとプッシュはうまく機能しました。

10
Ryan

これはこれを行う方法です。異なるsshアカウントに異なるssh構成を使用できます。

2月22日に更新:

このリンクを確認してください: https://Gist.github.com/2351996

6
asksw0rder

私はこれが少し遅れるかもしれないことを知っていますが、私はかなり長い間これで立ち往生し、最終的にこのように修正しました:

example screenshot

  • キーチェーンアクセス(osX)に移動します

  • gitを検索(すべてのアイテムを選択したことを確認してください)

  • ここでは、犯人の資格情報があります。それらを削除します。

お役に立てれば!

4
A.Dev

アカウントに関連付けられているSSHキーを変更しても機能しない場合は、アカウントに関連付けられている電子メールを変更します。

[Github]> [アカウント設定]> [メール]に移動し、コミットに使用しているメールアドレスがアカウントのメールと一致することを確認します。

コミットに使用しているメールアドレスを確認するには、次のコマンドを実行します:git config --global user.email。コミットに使用しているメールアドレスを変更する必要がある場合は、git config --global user.email "[email protected]"

3
Baub

同じ問題が発生しました。以下は私の場合に何が起こるかです:

これにより、リモートリポジトリと通信するたびに資格情報を要求しないようにgitを作成しました:git config --global credential.helper wincred

「wincred」git config --global credential.helper noneを置き換える「none」で同じコマンドを実行することで問題を解決しました

その後、Gitはもう一度ユーザー名/パスを尋ねると、すべてがうまくいきます

2
Hung Cao

私もこの問題を抱えていましたが、他の解決策はどれもうまくいきませんでした。作業のために、github認証用のエントリを含む.netrcファイルを作成したことがわかりました。 gitコマンドは常に.netrcを使用しましたが、これには私の古いユーザー名とパスワードがありました。新しいユーザー名とパスワードを使用するには、.netrcファイルのエントリを編集する必要がありました。

1
Steven Lambert

仕事中にgitで問題が発生したことはありませんでした。最近、MacbookをActive Directoryに接続し、マシンにいくつかの管理者アカウントを追加しました。ただし、その後、画面をロックして戻ってくるまでgitは正常に動作します。すると、次のようなあいまいなエラーが表示されます

No user exists for uid 1927040837
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

私はこの特定のマシン上でユーザー用のsshキーを1つしか持たず、私の用語ではzshを使用しています。ユーザーの電子メールと名前は正しいため、問題ではありませんでした。エルゴ、マシンをロックするたびに再起動するのは無駄です。私にとっての解決策は、私の.zshrcファイルを作成し、ssh-keyをエクスポートする行のコメントを解除します(これまで行ったことはなく、zshを何年も使用していました)。

行は次のようになります。

# ssh
export SSH_KEY_PATH="~/.ssh/<your_rsa_id>"

これを実行したら、ターミナルでresetを実行するだけで、すべて正常に動作します。

これが他の人の助けになることを願っています。

1
Andruw Hart

私もこの問題に遭遇し、sshキーを削除して新しいキーを作成した後でも、上記の解決策のいずれも機能しませんでした。 ssh-agentはキャッシュされたキーを使用していたことが判明したため、killall ssh-agentそして、それは働いた。

ここで解決策を見つけました。 http://fzysqr.com/2012/08/28/quick-tip-wrong-ssh-key-cached-with-github-after-changing-users-and-keys/

0
hobberwickey

追加したい-別のユーザーのアカウントで作業している場合は、リポジトリ設定の下の共同編集者エリアに自分を追加してください。

0
Dan Kelly

まあ、私は2つのgithubアカウントを適切に機能させるために1日中無駄になりました。クローン、コミット、プッシュの両方を行う必要があります。だから、すべての目的と結果を知らないので、私はうまく機能していると思われる解決策を強制しました。

基本的に、gitとsshのプロファイルを変更して、再び切り替えるまでモーダルモードで使用するアカウントに一致させます。

Githubには、dhoerlと他の2つのアカウントがあります。 .sshディレクトリにid_rsaファイル用の個別のファイルがあります。 ssh-add -D、次にssh-add git_dhoerl、ssh-add theOtherOneが必要でした。

あるプロファイルから別のプロファイルに切り替えるシェルコマンドが2つあります。それぞれ次のようになります。

cd ~/.ssh
rm id_rsa

ln git_dhoerl id_rsa

git config --global user.email "myEmailAddr"
git config --global github.user "myAccountName"        
git config --global github.token "myToken"
0
David H

最初にkillall ssh-agentを実行し、次に使用する必要があるアカウント用に生成されたsshキーを追加する一時的なソリューションを見つけましたssh-add ~/.ssh/id_4shameer

これは、タイプERROR: Permission to user/repo-git.git denied to usernameのエラーを取得するときに、複数のgithubアカウントで作業できる1つの方法です。

0
mshameer