Подтвердить что ты не робот

Передача параметров ssh в git клон

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

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]

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

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

4b9b3361

Ответ 1

Добавьте их в свой ~/.ssh/config:

Host host
    HostName host
    User user
    SshOption1 Value1
    SshOption2 Value2

Запись Host - это то, что вы укажете в командной строке, а HostName - истинное имя хоста. Они могут быть одинаковыми, или запись Host может быть псевдонимом. Запись User используется, если вы не укажете [email protected] в командной строке.

Если вы должны настроить это в командной строке, установите переменную среды GIT_SSH, чтобы указать на script с вашими параметрами.

Ответ 2

Недавно выпущенный git 2.3 поддерживает новую переменную "GIT_SSH_COMMAND", которая может использоваться для определения параметров команды WITH.

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone [email protected]

$GIT_SSH_COMMAND имеет приоритет над $GIT_SSH и является интерпретируется оболочкой, что позволяет использовать дополнительные аргументы включен.

Ответ 3

Другая опция, созданная для указания разных ключей, - это git config core.sshCommand с git 2.10 + (3 квартал 2016 года).

Это альтернатива переменной среды, описанной в ответе Бориса)

См. Коммит 3c8ede3 (26 июня 2016 г.) Нгуен Тхай pclouds Дуй (pclouds).
(Объединено Junio C Hamano - gitster - в коммите 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 в комментарии, вы должны использовать глобальную конфигурацию.

git config --global core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Ответ 4

Вот сложный пример, как передать аргументы 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 [email protected]

Примечание. Над строками находятся терминальные командные строки, которые вы должны вставить в свой терминал. Он создаст файл ssh, сделает его исполняемым и выполнит его.

Если вы хотите передать секретный ключ, пожалуйста, проверьте Как сообщить git, какой секретный ключ использовать?.

Ответ 5

Я думаю, что обновление git до версии >= 2.3 и использование GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone [email protected] - это вариант ставки, но если это невозможно, @josh-lee дал хороший вариант, но, пожалуйста, обновите свой ответ, отложив ssh config.

Host host
    HostName host
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null

Ответ 6

Эта проблема была исправлена, выполнив следующий шаг в Windows machine: -

  • Создайте файл конфигурации в папке C:\Users\username.ssh.

  • добавьте следующую строку в файл конфигурации.

    host <HOST>
    hostname <HOSTNAME>
    user <USER_NAME>
    IdentityFile ~/.ssh/id_rsa
    IdentitiesOnly yes
    port <PORT_NUMBER>
    KexAlgorithms +diffie-hellman-group1-sha1
    
  • затем попробуйте еще раз.

Ответ 7

Объединяя уже имеющиеся ответы, я выбираю следующие шаги:

1. Клонируйте репозиторий, GIT_SSH_COMMAND подход GIT_SSH_COMMAND.

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone ssh://url

2. После клонирования перейдите в каталог хранилища.

cd repo-dir

3. core.sshCommand конфигурацию core.sshCommand чтобы все будущие вызовы можно было просто выполнить с помощью команд git, как обычно, но с внутренним использованием предоставленных параметров git.

git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'