Проблема в том, что ваш локальный ssh по-прежнему предлагает GitHub ваш «старый» SSH-ключ. Это часто происходит, когда у вас есть один распознаваемый GitHub ключ (т. е. ваш «старый» ключ), загруженный в ssh-agent, но вы хотите использовать другой распознаваемый GitHub ключ (т. е. ваш «новый» ключ ).
ssh предлагает ключи в следующем порядке:
- указанные ключи, загруженные в агент
- другие ключи, загруженные в агент
- указанные ключи, которые не были загружены в агент
Под «указанными ключами» я подразумеваю те ключи, которые указаны параметром командной строки -i или параметром конфигурации IdentityFile (который может быть задан через параметр командной строки ~/.ssh/config или -o).
Если ваш «старый» ключ загружен в агент, а ваш «новый» ключ нет, то ssh всегда будет предлагать ваш «старый» ключ (из первой или второй категории) перед вашим «новым». ” (только в последней категории, так как он не загружается), даже если вы указываете свой «новый» ключ с помощью -i/IdentitiesOnly.
Вы можете проверить, какие ключи загружены в ваш ssh-агент с помощью ssh-add -l. Если ваш «старый» ключ указан в списке, вы можете решить проблему, выгрузив его из своего агента (не забудьте также выгрузить любые другие ключи, распознаваемые GitHub, за исключением, возможно, вашего «нового» ключа):
ssh-add -d ~/.ssh/old_key_file
Если вы используете Mac OS X, система может автоматически загрузить ваш «старый» ключ, если вы отметили «Запомнить пароль в моей связке ключей» при запросе пароля в какой-то момент; вы можете отключить эту автоматическую загрузку, удалив запись связки ключей для ключа с помощью команды
/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, для репозиториев вашего клиента (вы можете вернуть префикс git@, если хотите, но это не обязательно, поскольку приведенные выше записи устанавливают переменную конфигурации User).
person
Chris Johnsen
schedule
26.09.2011
git config --local --listпока в репозитории. - person chelmertz   schedule 26.09.2011url = [email protected]/user/project.git) Используйтеgit remote show -vv origin, чтобы узнать - person knittl   schedule 26.09.2011ssh -T [email protected]даст старое имя пользователя - person manojlds   schedule 26.09.2011