Передача параметров ssh в git clone
Я пытаюсь запустить git clone без проверки ssh ключа хоста репозитория. Я могу сделать это из ssh вот так:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
есть ли способ передать те же параметры ssh команде git clone?
Edit: есть ограничение, которое я не могу изменить ~/.ssh/config или любые другие файлы на этом компьютере.
6 ответов:
добавить их в свой
~/.ssh/config:Host host HostName host User user SshOption1 Value1 SshOption2 Value2The
Hostзапись-это то, что вы укажете в командной строке, иHostName- Это истинное имя. Они могут быть одинаковыми илиHostзапись может быть псевдонимом. ЭлементUserзапись используется, если вы не указалиuser@в командной строке.если нужно настроить это в командной строке
GIT_SSHпеременная окружения, указывающая на скрипт с вашими опциями в нем.
недавно выпущенный git 2.3 поддерживает новую переменную "GIT_SSH_COMMAND", которая может использоваться для определения команды с параметрами.
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
$GIT_SSH_COMMANDберет верх над$GIT_SSH, и интерпретируется оболочкой, что позволяет использовать дополнительные аргументы включенный.
вот хитрый пример, как передать аргументы ssh с помощью переменной GIT_SSH:
$ echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh $ chmod +x ssh $ GIT_TRACE=1 GIT_SSH="$PWD/ssh" git clone user@hostПримечание: над строками находятся командные строки терминала, которые вы должны вставить в свой терминал. Это создаст файл ssh, сделать его исполняемым и выполняет его.
Если вы хотите передать опцию закрытого ключа, пожалуйста, проверьте как сказать git, какой закрытый ключ использовать?.
еще одна опция, сделанная для указания разных ключей, -
git config core.sshCommandС git 2.10+ (Q3 2016)это альтернатива переменной окружения, описанной в Борис ' s ответ)
посмотреть commit 3c8ede3 (26 июня 2016) by Nguyễn Thái Ngọc Duy (
pclouds).
(слитый Junio C Hamano--gitster-- in commit dc21164, 19 июля 2016)новая переменная конфигурации
core.sshCommandдобавлена укажите, какое значение для git_ssh_command использовать для каждого репозитория.аналогично
$GIT_ASKPASSили$GIT_PROXY_COMMAND, мы читаем конфигурационный файл сначала возвращается к$GIT_SSH_COMMAND.это полезно для выбора различных закрытых ключей таргетинга тот же хост (например, github)
core.sshCommand:если эта переменная установлена,
git fetchиgit pushбудет использовать указанную команду вместоsshкогда им нужно подключиться к удаленной системе.
Команда находится в том же виде, что иGIT_SSH_COMMANDпеременная окружения и переопределяется, когда переменная окружения установлена.значит
git cloneможно:cd /path/to/my/repo git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' # later on git clone host:repo.gitесли вы хотите применить это для все РЕПО, как user1300959 добавляет в комментариях, вы бы использовали a глобальная конфигурация
git config --global core.sshCommand ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
Я думаю, что обновить git до версии >= 2.3 и использовать
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@hostЭто вариант ставки, но если это невозможно, @josh-lee дал хороший вариант, но, пожалуйста, обновите свой ответ, отступив файл конфигурации ssh.Host host HostName host StrictHostKeyChecking no UserKnownHostsFile /dev/null
эта проблема была исправлена, выполнив следующий шаг в окне машины: -
создать конфигурационный файл в разделе C:\Users\username.папка СШ.
добавьте следующую строку в файл config.
host <HOST> hostname <HOSTNAME> user <USER_NAME> IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes port <PORT_NUMBER> KexAlgorithms +diffie-hellman-group1-sha1затем попробуйте снова.