В этой статье я приведу пример настройки SSH для Phabricator.
Если на сервере уже установлен SSH сервер, то его трогать не будем, разве что можно изменить стандартный порт 22, например на 2222, чтобы запустить второй SSH сервер на стандартном порту и не указывать порт в ссылках репозитория.
На момент написания статьи я использовал операционную систему Ubuntu 18.04.
Создадим в системе пользователя, например git или hg:
adduser --quiet --no-create-home --disabled-password --gecos "" git
Скопируем скрипт и укажем в нем пользователя:
cp /home/phd/phabricator/resources/sshd/phabricator-ssh-hook.sh /usr/lib/phabricator-ssh-hook.sh
chown root /usr/lib/phabricator-ssh-hook.sh
chmod 755 /usr/lib/phabricator-ssh-hook.sh
nano /usr/lib/phabricator-ssh-hook.sh
Скопируем шаблон конфигурации SSH, укажем в нем AuthorizedKeysCommand, AuthorizedKeysCommandUser, и AllowUsers:
cp /home/phd/phabricator/resources/sshd/sshd_config.phabricator.example /etc/ssh/sshd_config.phabricator
nano /etc/ssh/sshd_config.phabricator
Запустим SSH сервер (чтобы он автоматически запускался при старте системы, добавим в /etc/rc.local или создадим скрипт автозапуска):
/usr/sbin/sshd -f /etc/ssh/sshd_config.phabricator
Проверим запущен ли он:
netstat -na | grep :22
echo [] | ssh git@test.ixnfo.com conduit conduit.ping
Добавим в файл /etc/sudoers:
git ALL=(phd) SETENV: NOPASSWD: /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /usr/bin/hg, /usr/bin/svnserve
Ключи добавляются в профилях пользователей, убедится что они добавлены можно так:
/usr/lib/phabricator-ssh-hook.sh git
При необходимости укажем параметры:
cd /home/phd/phabricator/
./bin/config set diffusion.ssh-host ...
./bin/config set diffusion.ssh-port 22
./bin/config set diffusion.ssh-user git
Также рекомендую установить Fail2Ban для блокировки неудачных попыток подключения.
Смотрите также мои статьи:
- Установка Phabricator в Ubuntu
- Настройка Phabricator
- Подключение к SSH с использованием ключей
- Автозагрузка программ в Ubuntu
- Установка и настройка Fail2ban