Я хотел бы предоставить общий доступ к каталогу на моем сервере, чтобы коллега мог синхронизировать его через Unison (двухсторонняя синхронизация). Я не хочу, чтобы он мог читать файлы на сервере через ssh-доступ. Было бы лучше, если бы пользователь ssh не мог войти в систему, а синхронизировался только через унисон. Как я могу этого добиться?
Вы можете использовать command=
вариант в authorized_keys
файл для принудительного запуска Unison, когда пользователь подключается через ssh. Это означает, что они не могут получить оболочку входа в систему. Вы также можете отключить переадресацию портов и другие функции ssh в этом файле.
В ~/.ssh/authorized_keys
линия будет выглядеть примерно так (обратите внимание на -server
вариант для Unison):
command="/usr/bin/unison -server",no-port-forwarding,no-X11-forwarding,no-pty,no-agent-forwarding,no-user-rc ssh-rsa AAAAB3NzaC1y....
Я не проверял это.
Для получения дополнительной информации о command=
параметр ssh, см. Ограничить исполняемые команды SSH авторизованными ключами.
В качестве альтернативы вы можете использовать переадресацию портов VPN или ssh для шифрования соединения в методе сокета, о котором упоминал Майк Пирс выше, но это, вероятно, будет более сложным.