Опираясь на ответ larsk и VonC ответить, вы можете создать git_ssh.sh
скрипт, например:
#!/bin/sh
# Workaround: GIT_SSH_COMMAND isn't supported by Git < 2.3
exec ${GIT_SSH_COMMAND:-ssh} "$@"
Затем вызовите команду git
следующим образом:
export GIT_SSH_COMMAND="/usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key"
export GIT_SSH=path/to/git_ssh.sh
git ...
Вот как это работает:
В Git v2.3+ $GIT_SSH_COMMAND
имеет приоритет над $GIT_SSH
, но более старые версии вообще не учитывают $GIT_SSH_COMMAND
.
$GIT_SSH
может содержать только путь к команде ssh
в системе. Он не может передать этой команде дополнительные аргументы командной строки, так как же мы можем передать дополнительные аргументы в ssh
?
Обходной путь — создать сценарий, включающий команду ssh
и ее дополнительные аргументы. Это именно то, о чем git_ssh.sh
: поскольку мы уже установили $GIT_SSH_COMMAND
как /usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key
, это именно то, что нам нужно для exec
, а "$@"
здесь для передачи аргументов, переданных git_ssh.sh
самим Git, в $GIT_SSH_COMMAND.
Часть ${...:-ssh}
, хотя и не является строго необходимой, является приятным штрихом, который сделает $GIT_SSH_COMMAND
по умолчанию командой ssh
, и, таким образом, установка GIT_SSH=git_ssh.sh
не нарушит нормальное выполнение git
.
В качестве дополнительной ценности этот скрипт полностью игнорируется Git v2.3+, и в этом случае $GIT_SSH_COMMAND
используется напрямую.
person
Chen Levy
schedule
01.01.2018
/usr/bin/ssh -o StrictHostKeyChecking=no -i /home/me/my_private_key
в приглашении? - person Yuval Adam   schedule 08.01.2013GIT_SSH_COMMAND
). См. мой ответ ниже - person VonC   schedule 23.12.2014