GitHubに何かをプッシュしてからしばらく経ちました。私は最初に自分のコンピューターにアカウントを設定していましたが、すべてうまくいきました。次に、アカウントをクライアントのアカウントに変更しました(コードをプライベートリポジトリにプッシュできました)。
しばらく経ちましたが、今は古いアカウントに戻り、問題が発生しています。新しいrsa_keyを生成し、Tの ここの指示 にほぼ従いました。
ただし、次のように入力すると:ssh -T [email protected]
私は得る:
こんにちはoldincorrectusername!認証に成功しましたが、GitHubはシェルアクセスを提供しません。
この古いクライアントのユーザー名は承認されていないため、リポジトリにプッシュすることもできません。コンピューターとGitHubのアカウント設定の両方でsshキーを再確認しました。
グローバルアカウント変数も設定しました。
git config --global user.name "Firstname Lastname"
git config --global user.email "[email protected]"
git config --global github.user username
git config --global github.token 0123456789yourf0123456789token
それでも、古いユーザー名を教えてくれます。
助言がありますか?
おかげで、
問題は、ローカルのsshがまだ「古い」SSHキーをGitHubに提供していることです。これは、ssh-agentに読み込まれたGitHub認識キー(「古い」キー)が1つあるが、別のGitHub認識キー(「新しい」キー)を使用したい場合によく起こります。 )。
sshは、次の順序でキーを提供します。
「指定されたキー」とは、-i
コマンドラインオプションまたはIdentityFile
設定オプション(~/.ssh/config
または-o
コマンドラインで指定できる)で指定されたキーを意味しますオプション)。
「古い」キーがエージェントにロードされているが「新しい」キーがロードされていない場合、sshは、「新しい」キーの前に常に「古い」キー(最初または2番目のカテゴリから)を提供します「新しい」キーを-i
/IdentitiesOnly
で指定した場合でも、キー(ロードされないため、最後のカテゴリのみ)。
ssh-add -l
を使用して、ssh-agentにどのキーがロードされているかを確認できます。 「古い」キーがリストされている場合は、エージェントからアンロードすることで問題を修正できます(「新しい」キーを除き、GitHubが認識した他のキーも必ずアンロードしてください)。
ssh-add -d ~/.ssh/old_key_file
Mac OS Xを使用している場合、ある時点でパスワードの入力を求められたときに「キーチェーンのパスワードを記憶する」をチェックすると、システムは「古い」キーを自動的にロードします。コマンドでキーのキーチェーンエントリを削除することにより、この自動読み込みを無効にできます。/usr/bin/ssh-add -K -d ~/.ssh/old_key_file
。他のシステムでも同様のことが行われますが、「停止」するように指示するコマンドは異なります。
エージェントから「古い」キーをアンロードする代わりに、IdentitiesOnly
設定オプションをyes
に設定して、sshにキーの2番目のカテゴリをスキップするように指示できます(指定されていないエージェントがロードしたキー)。 ~/.ssh/config
には次のようなセクションが含まれる場合があります。
Host github.com
User git
IdentityFile ~/.ssh/id_rsa # wherever your "new" key lives
IdentitiesOnly yes
この方法では、GitHubが認識した他のキーがエージェントにロードされているかどうかは関係ありません。 sshは常に「新しい」キーのみを提供します。
両方のGitHubアカウントのリポジトリにアクセスする必要があり、GitHubアカウントを切り替えるたびに構成ファイルを編集する必要がない場合は、次のように~/.ssh/config
をセットアップできます。
Host clientname.github.com
HostName github.com
IdentityFile ~/.ssh/client_id_rsa # or wherever your "old" client key lives
Host github.com
IdentityFile ~/.ssh/id_rsa # or wherever your "new" key lives
Host github.com *.github.com
User git
Hostname github.com
IdentitiesOnly yes
次に、リポジトリにgithub.com:GitHubAccount/repository
などのURLを使用し、クライアントのリポジトリにclientname.github.com:GitHubAccount/repository
などのURLを使用します(必要に応じてgit@
プレフィックスを戻すことができますが、上記のエントリは必要ないため、 User
構成変数を設定します)。