Я хочу иметь возможность использовать SFTP для редактирования файлов, требующих прав root.
Я использую аутентификацию на основе ключа SSH - ключ rsa на смарт-карте.
Если системе требуется sudo для выполнения команд корневого уровня, как мне обойти это?
Могу ли я создать способ обхода sudo только для SFTP?
Есть ли способ сохранить аутентификацию sudo & key.
Я использую Windows для подключения к Ubuntu. Мне это нужно для работы с Mac, подключающимся к Ubuntu.
Я понимаю, как сделать SSH Tunneling для администрирования системных служб. В настоящее время я использую логин пользователя root напрямую, но пароль паролем отключен. Я не понимал, как использовать sudo и SFTP одновременно. Представляется целесообразным требовать входа в систему от имени пользователя без полномочий root, а затем требовать использования sudo, поскольку в журналах будет записываться, кому были предоставлены повышенные привилегии для каждой команды.
Должен ли я беспокоиться об этом при использовании аутентификации на основе ключей или это тривиальное различие в безопасности / ведении журнала? Похоже, что аутентификация на основе ключей записывает серийный номер пользователя в журналы, и вы можете иметь несколько ключей, чтобы корневой пользователь мог идентифицировать каждого пользователя. Кажется, это тот же эффект, что и использование sudo для меня. Я ошибся?
sudo
.Ответы:
SFTP - это команда доступа к файловым операциям, с ограничениями от используемой вами учетной записи. Вы должны использовать ssh для выполнения дополнительных административных операций, что делает невозможным использование sudo и SFTP одновременно. Если вам нужен доступ ко всему диску без ограничений с использованием SFTP, сделайте это с помощью учетной записи root. В любом случае вы можете одновременно войти в систему с правами root на sftp и ssh, используя два разных сеанса.
Клавиши безопасности повышают безопасность и упрощают регистрацию, не требуя ввода с клавиатуры. Помогает только войти в систему, вы можете иметь несколько паролей для каждого пользователя учетной записи и иметь тот же эффект.
РЕДАКТИРОВАТЬ: Я забыл: вы можете создать другую учетную запись с тем же эффектом, что и root, если вы назначите идентификатор пользователя на 0, но не имеет никакого смысла, будучи таким же опасным. Может дать некоторую путаницу, если кто-то попытается войти в систему как root, но кроме этого, не было особого смысла.
источник
Вызов подсистемы с помощью sudo работал для меня.
Для хоста Ubuntu, например:
источник
sudo /usr/libexec/openssh/sftp-server
)Помимо того, что @MartinVonWittich предложил в комментариях выше, вы можете настроить выделенную пару ключей SSH только для этого действия и добавить их в
/root/.ssh/authorized_keys
файл пользователя root, ограничив область действия одной командой.Это позволило бы другой системе с соответствующим ключом к этой паре SFTP войти в эту систему как root. У вас все еще будет запись об этом соединении в ваших
syslog
и / илиsecure.log
файлах (при условии, что ваш дистрибутив обеспечивает этот уровень регистрации).ПРИМЕЧАНИЕ. Любой, кто получит доступ к серверу в этом методе, получит доступ к карт-бланшу, поэтому используйте его с умом. Еще лучше продолжить чтение и объединить эту возможность с доступом к chroot и только для чтения, чтобы создать более жесткие ограничения и целевой доступ к определенным местоположениям в качестве пользователя root.
chroot & readonly
Другой способ, который вы могли бы использовать здесь, заключался бы в ограничении SFTP-соединения, чтобы оно было привязано к определенным местоположениям в качестве корневого, в зависимости от того, какой ключ SSH был использован. См. Мой ответ на эти вопросы и ответы под названием « Ограничить резервное копирование без пароля с SFTP » для получения более подробной информации.
Вы также можете управлять с
sftp-server
помощью переключателей-R
и-d
.источник
sftp-server
не делает ее более безопасной, не так ли? Если злоумышленник получает доступ к этой учетной записи, он может легко предоставить себе корневую оболочку, используя SFTP. Таким образом, ограничение команды довольно бесполезно с точки зрения безопасности :)root
доступа к SFTP в любой форме - это просто проблема, особенно когда он не привязан к кешу.Простой подход, который я использовал, состоял в том, чтобы просто sftp и поместить файлы в область рабочей области (
mkdir
новый каталог, в котором у вас есть разрешения на сервере), а затем снова выполнить ssh, чтобы переместить файлы оттуда к месту назначения с помощьюsudo cp
илиsudo mv
.источник
У меня была похожая проблема в том, что я хотел использовать vimdiff для редактирования файлов конфигурации на группе в основном похожих хостов с помощью cssh и sudo, и вы сможете адаптировать мое решение к вашему рабочему процессу.
sudoedit (часть sudo) позволяет использовать любой редактор в качестве обычного пользователя для редактирования файла, для которого у вас нет разрешения на запись, и вы можете указать редактор с переменной среды. sudoedit копирует файл (ы), вызывает редактор с именами копии (ей) и ожидает выхода редактора, затем копирует измененную копию обратно туда, где она была. поэтому я создал «редактор», который не редактирует, просто отмечает файл для последующего использования и ждет, а также обертку вокруг vimdiff, которая использует этот маркер.
первый файл ~ / .bin / redit
второй ~ / .bin / redit1
То, как я их использую, я использую cssh, чтобы открыть соединение со всеми четырьмя хостами, а затем использую команду как
EDITOR=~/.bin/redit sudoedit /etc/conf/file
и затем. В другом окне запуска~/.bin/redit1
внесите мои изменения, сохраните и выйдите, переключитесь обратно на cssh и нажмите enter, чтобы зафиксировать изменения. и выйдите из sudoedit (если только я не редактирую более одного файла, в этом случае redit переходит к следующему файлу в списке, и вы снова запускаете redit1 для следующего файла.)Поскольку то, что вы делаете, является менее сложным, вам не нужно redit1 из-за работы только с одним удаленным хостом, вы можете просто указать свой редактор sftp на host: .var / redit / host или эквивалентный.
источник
Что я делаю, это использую scp вместо (s) ftp и меняю оболочку на
sudo su -
WinSCP, это в Advanced \ SCP \ Shell, но это работает только с протоколом scp.источник
Для sftp: Если у вас есть доступ sudo для оболочки ssh, вы можете добавить свое имя пользователя в корневую группу пользователей в / etc / group и затем предоставить этой группе разрешения rx для папок, к которым вы хотите получить доступ.
источник
root
группу, я подключаюсь через sftp, но все равно он не позволяет мне скачивать файлы из таких мест, как «/ etc» и так далее. Я не уверен, что делаю что-то не так, но подозреваю, что этот ответ не работает.Вы можете вставить в свой файл sshd_config на стороне сервера:
Таким образом, тот, кто имеет право NOPASSWD sudo, получит root-доступ к sftp.
источник
Subsystem
команда? В Ubuntu 16.04 я получаю «команда не найдена»Добавление этой строки в / etc / ssh / sshd_config было исправлением для меня, и прокомментируйте существующую строку подсистемы
Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
тогда
sudo systemctl sshd restart
источник