Когда я пытаюсь ssh -C user@my_server 'cd /home/me/my_repo'
оно работает. Когда я пытаюсь ssh user@my_server
, затем cd /home/me/my_repo'
а потом git pull
оно работает.
Но когда я пытаюсь ssh -C user@my_server 'cd /home/me/my_repo' && git pull
это не с Permission denied (publickey)
.
Мой вопрос действительно таков: Почему это вообще работает локально? Когда я делаю ssh -C user@my_server 'cd /home/me/my_repo && git pull'
Git заботится о том, какой ключ ssh я использовал для подключения к my_server, а не только ключ ssh, используемый для подключения к пульту my_repo?
SSH по умолчанию будет использовать ключи внутри вашего .ssh
каталог. Обычно это в ~/.ssh/
.
Похоже, вы написали следующую команду, которая может быть опечаткой:
ssh -C user@my_server 'cd /home/me/my_repo' && git pull
Вышеупомянутая команда запустит ssh, а после успешного завершения (статус выхода 0) запустит git pull
. Я просто говорю это, поскольку это может быть связано с вашей проблемой и, надеюсь, поможет, не будучи слишком педантичным.
Чтобы ответить на ваш вопрос, git по умолчанию будет использовать ключи в вашем .ssh
папка на машине, на которой выполняется команда.
Поэтому следует попытаться использовать ключи в доме user@my_server
.
Git не знает о ключах на серверах за пределами того места, где он находится.