Устранение неполадок на счетах Github на терминале

Прошло некоторое время, так как я что-то толкнул в GitHub. Сначала я установил свою учетную запись на своем компьютере, и все отлично поработало. Затем я изменил свою учетную запись на клиентскую учетную запись (чтобы я мог нажимать код в свой приватный репозиторий).

Это было какое-то время, и теперь я возвращаюсь к своей старой учетной записи, и у меня возникают проблемы. Я создал новую rsa_key и в значительной степени следовал за инструкциями здесь.

Однако, когда я печатаю: ssh -T [email protected] получаем:

Привет, oldincorrectusername! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.

Я также не могу нажать на мои репозитории, потому что это имя старого клиента не авторизовано. Я дважды проверял свои ключи ssh как на своем компьютере, так и на настройках моей учетной записи в GitHub.

Я также установил свои глобальные переменные учетной записи:

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

И все же это дает мне старое имя пользователя.

Любые предложения?

Спасибо,

Ответ 1

Проблема в том, что ваш локальный ssh ​​по-прежнему предлагает ваш "старый" SSH-ключ для GitHub. Это часто возникает, когда у вас есть один распознанный GitHub ключ (т.е. Ваш "старый" ключ), загруженный в ssh-agent, но вы хотите использовать другой распознанный GitHub ключ (т.е. Ваш "новый" ключ).

ssh предлагает ключи в следующем порядке:

  • указанные ключи, которые были загружены в агент
  • другие ключи, которые были загружены в агент
  • указанные ключи, которые не были загружены в агент

Под "указанными ключами" я имею в виду те ключи, которые заданы параметром командной строки -i или параметр конфигурации IdentityFile (который может быть задан с помощью опции командной строки ~/.ssh/config или -o).

Если ваш "старый" ключ загружен в агент, но ваш "новый" ключ отсутствует, тогда ssh всегда будет предлагать ваш "старый" ключ (из первой или второй категории) перед вашей "новой" клавишей (только никогда в последней категории, так как он не загружен), даже если вы укажете свой "новый" ключ с помощью -i/IdentitiesOnly.


Вы можете проверить, какие ключи загружены в ваш ssh-agent с помощью ssh-add -l. Если указан ваш "старый" ключ, вы можете исправить проблему, выгрузив его из своего агента (обязательно также выгрузите другие ключи, распознанные GitHub, за исключением, возможно, вашего "нового" ключа):

ssh-add -d ~/.ssh/old_key_file

Если вы используете Mac OS X, система может автоматически загружать ваш "старый" ключ, если вы отметили "Запомнить пароль в моей цепочке ключей" при запросе пароля в какой-то момент; вы можете отключить эту автоматическую загрузку, удалив запись Keychain для ключа с помощью команды
/usr/bin/ssh-add -K -d ~/.ssh/old_key_file. Другие системы могут делать что-то подобное, но команды, чтобы сказать им, чтобы "остановить это", будут разными.


Вместо того, чтобы выгружать "старый" ключ из вашего агента, вы можете установить параметр конфигурации IdentitiesOnly на yes, чтобы сообщить ssh пропустить вторую категорию ключей (не указанные агентом ключи). Ваш ~/.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

Затем используйте URL-адреса типа github.com:GitHubAccount/repository для ваших репозиториев и URL-адресов, таких как clientname.github.com:GitHubAccount/repository для репозиториев ваших клиентов (вы можете поместить префикс [email protected], если хотите, но это не обязательно, поскольку указанные выше записи устанавливают User).