Дополнительно
Как указать частный SSH-ключ для использования при выполнении команды shell на Git?
Возможно, довольно необычная ситуация, но я хочу указать частный SSH-ключ для использования при выполнении команды shell (git) с локального компьютера.
В основном это выглядит следующим образом:
git clone git@github.com:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
Или еще лучше (в Ruby):
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone git@github.com:TheUser/TheProject.git")
end
Я видел примеры подключения к удаленному серверу с помощью Net::SSH, который использует указанный закрытый ключ, но это локальная команда. Возможно ли это?
954
20
Ни одно из этих решений работал для меня.
Вместо этого, я уточнял @Мартин В. ЛöИСВ 'ы упоминание о установка
config
файл для SSH.СШ будет искать пользователя'с
~/.файл SSH/config файл
. У меня есть установки шахты как:И я добавить удаленный репозиторий:
А затем команды git работать нормально для меня.
Примечания
IdentitiesOnly да
, то необходимо [допустить СШ по умолчанию][2] отправки личных файлов сопоставление по умолчанию именем для каждого протокола. Если у вас есть файл с именем~/.по SSH/id_rsa
что вам пробовали свои `~/.по SSH/id_rsa.на GitHub без этой опции.Ссылки
[2]: https://serverfault.com/questions/450796/how-could-i-stop-ssh-offering-a-wrong-key/450807#450807 на "фу"и
Что-то вроде этого должно сработать (предложено orip):
Если вы предпочитаете подшивки, вы можете попробовать следующее (хотя оно более хрупкое):
Git вызовет SSH, который найдет своего агента по переменной окружения; у него, в свою очередь, будет загружен ключ.
Альтернативно, установка
HOME
также может помочь, если вы готовы установить каталог, содержащий только каталог.ssh
в качествеHOME
; он может содержать либо identity.pub, либо config файл, устанавливающий IdentityFile.Другие люди'с предложениями о `~/.по SSH/config и не особо сложные. Это может быть как простой, как:
Начиная от ЖКТ 2.3.0 мы также имеем простую команду (не нужен файл конфигурации):
Вам может потребоваться перезагрузка для сервиса SSH на вашу машину.
Содержимое my_git_ssh_wrapper:
Затем вы можете использовать ключ, выполнив следующие действия:
Суммируя ответы и commentsлучший способ настроить Git, чтобы использовать разные файлы ключей, а потом забыть об этом, который также поддерживает различных пользователей на одном узле (например, на GitHub личный аккаунт и рабочий), который работает на Windows также, - редактирование
~/.по SSH/config файл
c:\users\< (или ваш пользователь>.\СШ конфиг) и указать несколько идентификаторов:Затем, чтобы клонировать проект в качестве персонального пользователя, просто запустите команду регулярного
git клон
.Чтобы клонировать РЕПО как workuser
, бежать
git@github-work:company/project.git git клон`.С Git 2.10+ (3-й квартал 2016: дата выхода сентября. 2Д, 2016), у вас есть возможность установить конфиг для GIT_SSH_COMMAND` (а не просто переменную среды, как описано в Робер Джек'ы ответ)
См. совершить 3c8ede3 (26 июня 2016) по Нгуен Мáя Нгок дуй (
pclouds
). <суп>(объединяются по Джунио с Hamano --gitster
-- в совершить dc21164, 19 июля 2016) в</SUP и ГТ;Это означает, что
Git клон
может быть:Как указано здесь: https://superuser.com/a/912281/607049
Вы можете настроить его в репо:
Гораздо лучше идея, чтобы добавить, что хост или IP-адрес `.файл SSH/config файл, как так:
Я пошел с GIT_SSH переменной окружения. Здесь'моя оболочка, подобная той, что от Джо блок сверху, но обрабатывает любое количество аргументов.
Файл ~/gitwrap.sh
Тогда, в мои .bashrc и добавьте следующее:
Проблема это когда у тебя различными удаленными репозиториями на одном хосте (сказать github.com), и вы хотите, чтобы взаимодействовать с ними, используя различные ключи (т. е. разных на GitHub счетов).
Для того, чтобы сделать это:
При этом вы свяжите второй ключ новый именем "ХХХ" и для github.com.
Перейти в локальную папку репозиторий в командной строке и отображения текущего удаленного источника:
Затем измените происхождения:
Теперь вы можете нажать, принести... с правую клавишу автоматически.
Если ни одно из других решений здесь работать для вас, и вы создали несколько SSH-ключей, но до сих пор не может сделать простые вещи, как
затем если у вас есть два ключа SSH файлы, такие как
затем внутри репозитория Git, попробуйте:
а также убедитесь, что ваш гитхаб имя Пользователя по умолчанию и имя пользователя введены правильно по:
См https://gist.github.com/jexchan/2351996 для более подробной информации.
Многие из этих решений не выглядело соблазнительным. Однако, я нашел общий ГИТ-обертывание-сценарий подхода по следующей ссылке, чтобы быть наиболее полезным:
Как указать файл ключа SSH с
command ГИТ
Дело в том, что нет
ГИТ
команды, такие как следующие:Элвин'ы решением является использование четко определенных баш-скрипт оболочки, которая заполняет этот пробел:
Где git.sh-это:
Я могу проверить, что при этом решается и проблема у меня была с пользователей/ключевые признание для удаленной системе Bitbucket РЕПО с помощью Git удаленное обновление
,
ГИТ тянуть, и
клон git, все из которых теперь работают отлично в
хронработа, сценарий, который был в противном случае возникают проблемы при переходе на Шелл. Я также был в состоянии вызвать этот скрипт в R и еще решить точно такую же
хронвыполнить задачу (системы, напр.
("в Баш git.sh -я ~/.СШ/thatuserkey.Пэм тянуть на")`).Не то что я-такой же, как Рубин, но если R могут сделать это... о:-)
Когда вам нужно подключиться к GitHub с нормальной запрос (
ГИТ тянуть происхождения мастер
), хост как*
в `~/.по SSH/config, который работал для меня, любой другой хост (сказать: "на GitHub" или "ГБ") Смотрите там'т работать.Вам нужно создать файл ~/.по SSH/config как ниже
разрешение как ниже
Добавить ваш публичный ключ в ГИТ (кошка ~/.СШ/id_rsa_pub [или симметрична имя])
и тогда git клон, как показано ниже
если у вас есть каталог на вашем пути, где вы хотите подписать с заданной identifyfile можно указать на использование конкретной идентификации файла через .файл SSH/config с установкой
ControlPath
например:хозяин github.com ControlPath ~/проекты/работы/** Имя github.com IdentityFile ~/.СШ/id_work ГИТ пользователей
Затем
СШ
будет использовать указанный файл тож при выполнении команды git под данный Рабочий путь.В Windows с ГИТ Баш вы можете использовать следующие действия, чтобы добавить репозиторий
SSH-агента Баш-с 'СШ-добавить "и ключ-адреса и"; в Git дистанционного добавить происхождения и Медведь рэп-адрес;'
например:SSH-агента Баш-с 'СШ-добавить /д/испытание/закрытый ключ.ППК; в Git дистанционного добавить происхождения git@git.test.com:test/test.git'
что закрытый ключ находится на диске D, проверьте папку Компьютер. Также, если вы хотите, чтобы клонировать репозиторий, вы можете изменитьв Git дистанционного добавить происхождения
сGit клон
.После ввода этого в Git Баш, он будет просить вас за пароль!
Помните, что закрытый ключ OpenSSH и закрытый ключ замазка будут иметь свои страницы!
Если вы создали свои ключи с генератор puttygen, вы должны преобразовать свой закрытый ключ для пакета OpenSSH!
для гитлаб
RSAAuthentication да
DOC это здесь
Вы можете использовать переменную окружения GIT_SSH. Но вам придется обернуть ssh и опции в сценарий оболочки.
См. руководство по git:
man git
в вашей командной оболочке.