- [sudo][sftp][sshfs][scp] Как?
- How do I change user after login (e.g. su root)?
- Direct Login
- Use sudo on Login
- Как использовать SFTP в системе, которая требует sudo для корневого доступа и аутентификации на основе ключей ssh?
- Possible to do sftp with sudo ? #287
- Comments
- pratikd1 commented Jun 26, 2015
- mscdex commented Jun 27, 2015
- pratikd1 commented Jun 27, 2015
- mscdex commented Jun 28, 2015
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Руководство по установке SFTP сервера на Linux
- Что такое SFTP?
- Установка SFTP-сервера на Linux
- Этап 1: Создание групп, пользователей, каталогов
- Этап 2: Настройка sshd_config
- Этап 3: Перезагрузите службу
- Доступ к SFTP через командную строку Linux
- Примеры команд SFTP
[sudo][sftp][sshfs][scp] Как?
Вопрос: как (и вообще возможно ли это?) использовать sudo при подключении через sftp, sshfs, scp, при условии, что вход под учетной запись root запрещен?
ssh remotehost sudo -t command
либо
ssh root@remotehost command
(если я правильно понял вопрос). Да, мой ответ сделан с кучей допущений
hacker@/home/$ scp root@pentagon.com:/etc/shadow .
> ssh remotehost sudo -t command
Разумеется, имелось в виду ssh -t remotehost sudo command
>если я правильно понял вопрос
Видимо нет.
> вход под учетной запись root запрещен?
Учетная запись, вход которой разоешен, прописана в /etc/sudoers удаленного хоста? Если нет, то никак (либо пинать админа remotehost, чтобы прописал)
// Я правильно понял, что хочется ssh’нуться на удаленный хост и на нем запускать команды через sudo?
Без использования sudo -s на ssh от другого пользователя?
Нет. Хочется через sftp, sshfs, scp получать доступ к файлам, к которым у учетной записи под которой производится вход есть только через sudo.
Я могу редактировать файл на удаленной системе, например, таким образом:
vim scp://user@server//home/user/file.txt
или смонтировать удаленную файловую систему через sshfs.
Как мне получить таким образом доступ к файла, к которым доступ есть только рута? При условии, что на удаленной системе я могу использовать sudo.
>Я правильно понял, что хочется ssh’нуться на удаленный хост и на нем запускать команды через sudo?
Нет. sudo есть, нет доступа по ssh у рута. Как мне отредактировать к примеру /etc/passwd на удаленной системе локально установленным редактором?
Как мне получить таким образом доступ к файла, к которым доступ есть только рута? При условии, что на удаленной системе я могу использовать sudo.
ssh -t remotehost sudo cat /path/to/file/with_no_access_rights > localfile
Здесь /path/to/file/with_no_access_rights — файл, доступ к которому есть только у рута. В localfile на твоем хосте будет содержимое этого файла. Залить обратно измененный файл можно так:
cat localfile | ssh -t remotehost sudo tee /path/to/file/with_no_access_rights
// Если есть более простой способ, то сам буду рад его узнать
Вариант, конечно, но вот удобством использования тут и не пахнет:)
Вариант, конечно, но вот удобством использования тут и не пахнет:)
В принципе, возможна еще такая перверсия: ssh’ишься на remotehost, прописываешь через sudoedit в тамошний sshd_config «PermitRootLogin yes» и передергиваешь удаленный sshd, после чего монтируешь через sshfs root@remotehost:/ удаленную ФС и правишь на ней файлы. Здесь я исхожу из того, что 1) тебе можно через sudo править sshd_config и послылать SIGHUP удаленному sshd и 2) админы удаленного хоста не убьют тебя начисто за такие фокусы
>админы удаленного хоста не убьют тебя начисто за такие фокусы
Сам я себя убивать конечно не стану, но вот позволить себе я такое не могу:)
Сам я себя убивать конечно не стану, но вот позволить себе я такое не могу:)
Источник
How do I change user after login (e.g. su root)?
None of the protocols (SFTP, FTP and SCP) supported by WinSCP allow the user to be changed in the middle of file transfer session. You need to start the session with the correct user.
Direct Login
Easiest way is to allow direct login with the user account you need, if it is not allowed already. For accounts such as root , the direct login is typically disabled by default for security reasons. So when enabling it, have security in mind.
Particularly with SSH , you may want to keep password authentication (the most vulnerable one) disabled and use e.g. public key authentication instead. With OpenSSH server, you can do that by setting sshd_config keyword PermitRootLogin to without-password .1
Use sudo on Login
In some cases (with Unix/Linux server) you may be able to use sudo command straight after login to change a user, before file transfer session starts.
FTP protocol does not allow this.
The SFTP and SCP protocols allow for this, but the actual method is platform dependent.
- With SFTP protocol, you can use SFTP server option on SFTP page of Advanced Site Settings dialog to execute SFTP binary under a different user. With OpenSSH server, you can specify:
Note that SFTP server binary may be located elsewhere2 (e.g. in /usr/lib/sftp-server , /usr/lib/openssh/sftp-server or /usr/libexec/openssh/sftp-server ).
- With SCP protocol, you can specify the following command as custom shell on the SCP/Shell page of Advanced Site Settings dialog:
However you will not be able to provide a password for su (see remote command execution limitations). So you may be able to do the above only if you are allowed to do sudo su without being prompted with password. See sudo documentation to learn how to do that. For example you can add following line to sudoers file ( /etc/sudoers ):
The above line is very permissive, it allows user yourusername connected from anywhere (the first ALL ) to run any command (the second ALL ) as a root without being asked for password. So you should restrict it as much as possible.
For example with OpenSSH you may restrict it only to SFTP session by:
Note that as WinSCP cannot implement terminal emulation, you need to have sudoers option requiretty turned off (which is default).
Источник
Как использовать SFTP в системе, которая требует sudo для корневого доступа и аутентификации на основе ключей ssh?
Я хочу иметь возможность использовать SFTP для редактирования файлов, требующих прав root.
Я использую аутентификацию на основе ключа SSH — ключ rsa на смарт-карте.
Если системе требуется sudo для выполнения команд корневого уровня, как мне обойти это?
Могу ли я создать способ обхода sudo только для SFTP?
Есть ли способ сохранить аутентификацию sudo & key.
Я использую Windows для подключения к Ubuntu. Мне это нужно для работы с Mac, подключающимся к Ubuntu.
Я понимаю, как сделать SSH Tunneling для администрирования системных служб. В настоящее время я использую логин пользователя root напрямую, но пароль паролем отключен. Я не понимал, как использовать sudo и SFTP одновременно. Представляется целесообразным требовать входа в систему от имени пользователя без полномочий root, а затем требовать использования sudo, поскольку в журналах будет записываться, кому были предоставлены повышенные привилегии для каждой команды.
Должен ли я беспокоиться об этом при использовании аутентификации на основе ключей или это тривиальное различие в безопасности / ведении журнала? Похоже, что аутентификация на основе ключей записывает серийный номер пользователя в журналы, и вы можете иметь несколько ключей, чтобы корневой пользователь мог идентифицировать каждого пользователя. Кажется, это тот же эффект, что и использование sudo для меня. Я ошибся?
Источник
Possible to do sftp with sudo ? #287
Comments
pratikd1 commented Jun 26, 2015
Is it possible to do a sudo with an sftp connection?
If there was someway to pass in the «substem» name for sftp, e.g. in the command line you can do this.
sftp -s «/usr/bin/sudo /usr/libexec/openssh/sftp-server» xxx.yyy.zzz.aaa
that would help.
The text was updated successfully, but these errors were encountered:
mscdex commented Jun 27, 2015
SFTP itself does not provide a way to (temporarily) elevate permissions like sudo . My suggestion would be to either make the user the file owner or put the user in the owner group or use sudo straight up with ssh2.exec() .
pratikd1 commented Jun 27, 2015
There is a way to specify sudo with sftp.
Currently in your code, you are having the subsystem fixed as «sftp», Instead of that if you let one pass in the subsystem as an optional parameter, then one can pass something like «sudo -u /usr/lib/openssh/sftp-server» (sometimes the path is /usr/libexec/openssh/sftp-server).
Note with this mechanism there is no way to enter the password for sudo, but one can open a ssh connection first, do exec of some command with sudo which will prompt for password, and then in the same connection, do an sftp with sudo. Since sudo tickets usually last for 5 minutes, the sftp will not prompt for password.
mscdex commented Jun 28, 2015
As far as I can tell that is an implementation detail specific to OpenSSH as the RFC specifically mentions the subsystem name for v3 being just sftp .
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Руководство по установке SFTP сервера на Linux
3 минуты чтения
Привет, друг! Мы подготовили удобную инструкцию по установке и настройке SFTP-сервера Linux.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Что такое SFTP?
SFTP — это безопасный протокол передачи файлов — «Secure SHell» File Transfer Protocol. То есть это версия FTP, которая для безопасности поверх использует SSH. FTP делает то же самое, но без шифрования, поэтому использовать SFTP предпочтительнее.
Установка SFTP-сервера на Linux
Чтобы выполнить эти шаги, вам нужно иметь права sudo. SFTP прост в установке, но сначала необходимо установить OpenSSH со стороны сервера и SSH-пакет со стороны клиента.
Чтобы установить OpenSSH на сервер, используйте следующую команду:
Вам также понадобится SSH на компьютере, с которого вы хотите получать доступ к серверу SFTP.
Теперь все готово для настройки SFTP.
Этап 1: Создание групп, пользователей, каталогов
Для безопасного использования SFTP, лучше всего создать группы и пользователей, которые будут использовать только эту службу.
Создадим группу с названием sftpg, при помощи комыды groupadd :
Далее создадим пользователя seenisftp, и добавим его в группу.
В команде useradd параметр -g указывает группе, какого пользователя нужно добавить.
Предположим, что вы хотите использовать каталог /data/ в качестве корневого для sftp, а /data/USERNAME — для каждого пользователя. Поэтому, когда пользователи входят через sftp, они должны будут оказаться в каталоге /data/USERNAME . Также создадим ограничение при котором пользователи смогут читать файлы из этого каталога, но загружать их смогут только в каталог uploads .
Cоздадим каталоги и изменим их доступ:
Важно: убедитесь, что владелец /data/USERNAME и есть root, это обязательно для изменения корневого каталога в SFTP
Этап 2: Настройка sshd_config
Далее нужно настроить сервер так, чтобы когда пользователь, из группы sftpg, входил в систему, он попадал в sftp вместо обычной оболочки, в которую попадает через ssh. Добавьте следующий фрагмент кода в файл /etc/ssh/sshd_config :
ChrootDirectory позволяет создать необходимый каталог в качестве корневого узла ( / каталог) в дереве каталогов. Вошедший в систему пользователь не сможет увидеть ничего выше этого каталога и это не даст ему получить доступ к файлам других пользователей. %u — это escape код для заполнения его текущим именем пользователяm, во время входа в систему.
Этап 3: Перезагрузите службу
Чтобы выполнить внесенные в sshd_config изменения, перезапустите службу:
Доступ к SFTP через командную строку Linux
Заходите в SFTP также как в SSH:
Примеры команд SFTP
Синтаксис команд SFTP:
Параметрами могут быть либо локальные, либо удаленные системные пути.
- GET — загрузка содержимого с удаленного сервера в локальную систему.
- PUT — загрузка содержимого из локальной системы в удалённую.
- RM – предназначен для удаления файлов в удалённой системе.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Источник