Передача параметров 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 Value2
The
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
затем попробуйте снова.