Я создал ключ SSH для своего репозитория GitLab, и когда я тестирую его с помощью SSH, он работает и запрашивает парольную фразу:
>ssh -T [email protected]
Enter passphrase for key 'C:\Users\[username]/.ssh/id_ed25519':
Welcome to GitLab, @000[...]!
я также использовал
>git remote set-url origin [email protected]:000[...]/project.git
без ошибок. Однако, когда я пытаюсь зафиксировать и отправить в репозиторий, Git запрашивает пароль [email protected]
, а не парольную фразу ключа SSH.
Согласно документам (https://docs.gitlab.com/ee/ssh/), вы можете установить ключ ssh в файле конфигурации ~/.ssh/config
. Поэтому я создал текстовый файл в этом каталоге с таким содержимым:
Host gitlab.lrz.de
HostName gitlab.lrz.de
IdentityFile ~/.ssh/id_ed25519
Он по-прежнему не работает, и я не уверен, что он вообще использует этот файл конфигурации. Мне удалось запустить все на сервере Linux, но не на этом компьютере с Windows. Я попробовал это через командную строку и через Pycharm.
>git --version
git version 2.35.1.windows.1
Вы можете настроить команду ssh, используемую git, в конфигурации git, а затем передать свой ключ при использовании любой команды git.
git config core.sshCommand "ssh -i ~/.ssh/id_ed25519"
Это не сразу сработало, но я получил сообщение об ошибке, которое мне помогло! Там было сказано, что Warning: Identity file /p//.ssh/id_ed25519 not accessible: No such file or directory.
Так что я использовал полный путь к ключевому файлу, и тогда он работал с этой командой. Благодарю вас!
И кстати: теперь это работает и через Pycharm!
Круто, рад был помочь тебе :)
в PyCharm попробуйте перейти к VCS -> Git -> Remotes
и убедитесь, что настроенный там URL-адрес выровнен с URL-адресом SSH (вы можете увидеть URL-адрес ssh при переходе к репозиторию через браузер и нажатии на кнопку клонирования)
Я хочу попытаться объяснить, что, видимо, произошло: у меня есть дом в его обычном месте (
C:\Users\username
) и при создании ключейssh
или при использованииssh
используется это местоположение. Однако у каждого пользователя также есть дом на другом сервере, и, по-видимому, git интерпретировал~
как этот (P:
). А еще на самом деле там есть папка.ssh
и конфиг-файл.