Иногда нужно организовать SSH-туннель через сервер, но при этом не давать пользователю возможность выполнять команды, входить в систему или работать с файлами. Ниже — пошаговая инструкция, как создать изолированного пользователя только для SSH-туннелей на Ubuntu.
1. Создаём системного пользователя без shell и домашнего каталога
sudo adduser --system --no-create-home --shell /usr/sbin/nologin tunneluser
Такой пользователь не сможет войти в систему интерактивно, но будет существовать для SSH-доступа.
2. Настраиваем ключи SSH
Создаём каталог для публичного ключа:
sudo mkdir /etc/ssh/tunneluser_keys
Добавляем правильные права:
sudo chown -R tunneluser:tunneluser /etc/ssh/tunneluser_keys sudo chmod 700 /etc/ssh/tunneluser_keys
Добавляем публичный ключ:
echo "ssh-ed25519 AAAA...." | sudo tee /etc/ssh/tunneluser_keys/authorized_keys sudo chmod 600 /etc/ssh/tunneluser_keys/authorized_keys sudo chown tunneluser:tunneluser /etc/ssh/tunneluser_keys/authorized_keys
3. Разрешаем авторизацию по ключам
Открываем файл /etc/ssh/sshd_config и убеждаемся, что есть строки:
PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys /etc/ssh/%u_keys/authorized_keys PasswordAuthentication no
4. Ограничиваем пользователя только туннелями
В конец /etc/ssh/sshd_config добавляем блок:
Match User tunneluser
AuthorizedKeysFile /etc/ssh/tunneluser_keys/authorized_keys
AllowTcpForwarding yes
PermitTunnel yes
X11Forwarding no
ForceCommand echo 'This account is restricted to SSH tunneling only.'
ForceCommandне даёт выполнять команды — при попытке интерактивного входа пользователь просто увидит сообщение.
Но при этом SSH-туннели (-L,-R,-D) будут работать.
5. Перезапускаем SSH
sudo systemctl restart ssh
6. Проверяем подключение
С клиентской машины можно запустить туннель, например:
ssh -i ~/.ssh/yourkey -N -L 8080:localhost:80 tunneluser@your_server
Теперь пользователь tunneluser не может выполнять команды, но может безопасно использовать SSH-туннели для проброса портов или SOCKS-прокси.
7. Возможные ошибки
Ошибка:
chown: invalid group: ‘tunneluser:tunneluser’
Решение:
Создай группу вручную:
sudo groupadd tunneluser sudo usermod -g tunneluser tunneluser
и повтори команду:
sudo chown -R tunneluser:tunneluser /etc/ssh/tunneluser_keys
Готово!
Теперь у тебя есть изолированный пользователь для SSH-туннелей — безопасный, без пароля и без доступа к системе.
