Как подключить sh к двум различным учетным записям GitHub с помощью клавиш S SH в Powershell? - PullRequest
1 голос
/ 15 марта 2020

Я на Windows 10, и у меня установлено Git для Windows. Я отправляю код на две разные учетные записи GitHub и пытаюсь настроить моего агента S SH на использование двух ключей (по одной для каждой учетной записи).

Вот мой ~\.ssh\config:

Host github.com-userone
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

Host github.com-usertwo
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_usertwo

Он работает правильно, если я нажимаю / толкаю, используя Git Bash, но я также хочу использовать Powershell. Когда я пытаюсь сделать Pu sh или вытащить из Powershell, я получаю ошибку «пожалуйста, убедитесь, что у вас есть правильные права доступа». Если я запускаю start-ssh-agent.cmd из Powershell, то git push работает для этого экземпляра Powershell.

Если я добавлю start-ssh-agent.cmd в свой профиль profile.ps1, тогда запускается агент S SH и git push работает правильно, но это, кажется, нарушает другие аспекты моего профиля Powershell (показано ниже). Import-Module и Set-Theme больше не работают. Я не получаю никаких ошибок; Я просто больше не получаю свой стиль po sh - git или oh-my- git.

Import-Module oh-my-posh
Import-Module posh-git
Set-Theme Paradox
Set-Location "c:\users\brubin\documents\visual studio 2017\projects"
start-ssh-agent.cmd

Большинство инструкций, которые я нашел, чтобы заставить это работать, включают запуск eval $(ssh-agent -s), однако eval не работает в Powershell.

Как настроить это так, чтобы я мог выдвигать / извлекать из двух разных учетных записей GitHub с помощью Powershell?

1 Ответ

1 голос
/ 16 марта 2020

Во-первых, вам нужен агент * sh, только если вы защитили эти закрытые ключи парольной фразой при их создании.

Во-вторых, обязательно используйте правильную форму URL-адреса S SH, ссылаясь на эти записи ~ / .ssh / config:

github.com-usertwo:<usertwo>/myRepo

Как уже упоминалось в dahlbyk/posh-git выпуск 640

Вместо использования Git 's start-ssh-agent.cmd, я бы использовал встроенный OpenS SH, установленный на Windows 10 1803.
Для этого выполните следующие действия:

Из окна PowerShell запустите get-command ssh.exe. Вы должны увидеть, что ssh.exe находится по адресу C:\Windows\System\OpenSSH\ssh.exe.
Если вы не получили никакого результата, откройте раздел «Приложения и функции» приложения «Windows 10 Настройки» и нажмите ссылку «Управление дополнительными функциями». Как только это откроется, выберите OpenS SH Client, чтобы добавить эту функцию. После этого снова откройте PowerShell и посмотрите, вернется ли get-command ssh.exe C:\Windows\System\OpenSSH\ssh.exe

Теперь давайте запустим службу агента s sh и настроим ее автоматический запуск при перезагрузке.
Откройте PowerShell как администратор и выполните:

Get-Service ssh-agent | Set-Service -StartupType Automatic -PassThru | Start-Service

Cd к вашему $home\.ssh dir и выполните ssh-add .\<private-key-file>, чтобы добавить ваш файл закрытого ключа (и фразу-пароль) в s sh -agent.
Последний шаг - получить Git для Windows для использования WIndows native ssh.exe.
Для этого выполните: git config --global core.sshCommand C:/WINDOWS/System32/OpenSSH/ssh.exe.

Вот и все! Теперь агент s sh запущен и обслуживает вашу фразу-пароль. Это будет продолжаться после перезагрузки (без необходимости повторного ввода пароля).
И даже лучше, агент * sh будет работать для приложений (таких как Visual Studio), которые вы запускаете из меню «Пуск». консоли PowerShell - которую вам придется сделать, вы использовали start-ssh-agent.cmd.

Примечание:

Я набрал "Services" в Start Menu и у меня появилось окно со списком всех служб, установленных в настоящее время на компьютере.
Я заметил, что рядом с "OpenSSH Authentication Agent" указано "Stopped".

Я запустил Get-Service ssh-agent | Set-Service -StartupType Manual -PassThru, а затем Start-Service ssh-agent и все заработало.
Кажется, служба была отключена или что-то в этом роде. Я никогда не касался ни одной из этих вещей на Windows, возможно, по умолчанию он называется «Остановлен».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...