Передача параметров ssh в git clone


Я пытаюсь запустить git clone без проверки ssh ключа хоста репозитория. Я могу сделать это из ssh вот так:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host

есть ли способ передать те же параметры ssh команде git clone?

Edit: есть ограничение, которое я не могу изменить ~/.ssh/config или любые другие файлы на этом компьютере.

6 67

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
    
  • затем попробуйте снова.