Я пытаюсь сделать github-гит тянутьиз скрипта php как пользователь www-data и получаю сообщение "Проверка ключа хоста не удалась". У моего основного пользователя зарегистрирован ключ хоста, но у моего www-data его нет, так как у него даже нет доступа к каталогу ~/.ssh.
Есть ли еще общесистемный файл known-hosts в Ubuntu 18.04? Я полагаю, что было бы небезопасно давать пользователю www-data доступ к моему~/.ssh-каталог?
решение1
Как предположил @GMaster, использование HTTPS вместо SSH для автоматизированного pull кажется наиболее разумным выбором. Но если вам действительно необходимо использовать протокол ssh (зачем?), у вас есть несколько вариантов known_hosts
и учетных данных:
Создайте
~/.ssh
дерево, включая предварительно заполненныйknown_hosts
, вwww-data
домашнем каталоге (в моей системе это/var/www
, но проверьте свой в/etc/passwd
). Вы можете создать файл самостоятельно, подключившись и проверив ключ хоста вручную. Просто убедитесь, что такие файлы и каталоги имеют соответствующие разрешения (обычно 0700/0600) и владельца.Разместите этот файл в другом месте (с соответствующими разрешениями) и укажите на него с помощью
-o UserKnownHostsFile=/path/to/known_hosts
Для обоих подходов попробуйте
-o StrictHostKeyChecking
разные варианты и-o UpdateHostKeys
найдите баланс между безопасностью и удобством.В крайнем случае вы можете полностью отключить проверку ключа хоста для www-data, либо в
/var/www/.ssh/config
параметрах командной строки, либо с помощью них-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
. Просто помните о серьезных последствиях для безопасности, которые это подразумевает.
И, подтверждая то, что вы уже подозревали: ни при каких обстоятельствах не давайте www-data (или любому другому) пользователю доступ к вашему ~/.ssh
. Помните о вашемчастныйключи тоже там!
решение2
Да, действительно есть общесистемный файл известных хостов, который по умолчанию /etc/ssh/ssh_known_hosts
. Вы можете запустить man ssh_config
и выполнить поиск, GlobalKnownHostsFile
чтобы увидеть значение по умолчанию в вашей системе. Вы также можете изменить значение этой опции на обычное (с -o
), если хотите.