- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Руководство по установке SFTP сервера на Linux
- Что такое SFTP?
- Установка SFTP-сервера на Linux
- Этап 1: Создание групп, пользователей, каталогов
- Этап 2: Настройка sshd_config
- Этап 3: Перезагрузите службу
- Доступ к SFTP через командную строку Linux
- Примеры команд SFTP
- 6 Transferring Files Securely with SFTP
- About Transferring Files with SFTP
- Configuring Your SFTP Server
- Accessing Your SFTP Server
- File Transfer Setup — Unix or Linux
- Generating SSH Keys with ssh-keygen
- Transferring Files with SFTP
- Logging In
- Transferring a File
- Настройка SFTP доступа
- Создание пользователя для SFTP
- Настройка сервера SSH
- Настройка директорий для пользователя SFTP
- Частые ошибки
- Комментарии к статье (9)
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Руководство по установке SFTP сервера на Linux
3 минуты чтения
Привет, друг! Мы подготовили удобную инструкцию по установке и настройке SFTP-сервера Linux.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Что такое 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 – предназначен для удаления файлов в удалённой системе.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
6 Transferring Files Securely with SFTP
This document explains how to use secure file transfer protocol (SFTP) to protect data as you upload and download files between Oracle Monetization Cloud and external systems.
Topics in this document:
About Transferring Files with SFTP
Oracle Monetization Cloud includes an SFTP server, which you can use to transfer files securely between external sources and Oracle Monetization Cloud as follows:
Upload usage data: To process usage records from external systems, you must upload them to your SFTP server. From there, a cron job that runs every five minutes automatically maps the external records to internal events and uploads them to Oracle Monetization Cloud. See About Rating Usage Events.
Download PDF invoices: Business Operations saves a subset of your invoices to the SFTP server. From there, you can download the invoices to an external system from which you can distribute them to your customers. See About Retrieving Invoices as PDF Files.
Configuring Your SFTP Server
To configure your SFTP server, submit a service request to Oracle support ( https://support.oracle.com ). Include the following information:
The public key used to access the SFTP server from your computer.
To generate the key, run standard ssh-keygen commands on your computer. For example, run these commands on a Linux system:
The key is added to the $HOME/.ssh/id_rsa.pub file.
The email address of the person responsible for your SFTP account.
The key is valid for one year. Oracle uses the email address to notify you when the key is about to expire.
Accessing Your SFTP Server
To access your SFTP server, run the following command from the computer on which you generated your SFTP key:
env is one of the following values:
prod for a production environment
test for a development environment
sftp_host is the host name of the SFTP server, which you were given when Oracle configured the server.
Transfer files to and from the following directories. Use standard SFTP commands to navigate to the directories and to put or pull the files.
Transfer Operation | Directory |
---|---|
Upload usage records | /u01/sftp/ env _tenant_sftp/incoming/events |
Download PDF invoices | /u01/sftp/ env _tenant_sftp/outgoing/invoices |
To check the status of usage records that Oracle Monetization Cloud attempted to convert to the internal format and upload, go to the following directories. The /success directory contains copies of the original external records that were successfully processed. The /reject directory contains copies of the original external records that Oracle Monetization Cloud was unable to convert and upload.
Источник
File Transfer Setup — Unix or Linux
The Unix or Linux file transfer setup procedure uses OpenSSH to create a key pair and the command line to transfer files to an SFTP site.
Generating SSH Keys with ssh-keygen
- Install OpenSSH from the following location: http://www.openssh.com.
- Create an SSH key pair using the following command:
[username@host tmp]$ ssh-keygen –b 4096 -t rsa -f
/.ssh/id_rsa_opower
Send the public key (
/.ssh/id_rsa_opower.pub) to your Oracle Utilities Service Delivery Manager .
Warning: Do not send the private key to Oracle Utilities . The private key should remain with your utility for security purposes. If you send the private key to Oracle Utilities , then it will be deleted, and a new public-private key pair will need to be generated.
Transferring Files with SFTP
Logging In
You can log in using the following command:
sftp -o IdentityFile=
In this case, is your client code. Your client code is provided by your Oracle Utilities Delivery Team , and is typically an acronym for your utility name. For example, if your utility name is the Great Energy Company, your client code might be gec. The username must be entered as lower case.
If you do not know what names to enter for either of these variables, please contact your Delivery Team . An example of a session is shown below:
It is expected behavior to see the “Unauthorized access prohibited” warning.
Transferring a File
To transfer a file, use the cd command to change the directory and enter the command to send the file. In the example below, the file hello.txt is placed in the Uploads directory. (Note that the name of the Uploads directory is capitalized and case-sensitive.)
Copyright В© 2013, 2021 , Oracle and/or its affiliates. All rights reserved.
Источник
Настройка SFTP доступа
Если по какой-то причине потребовалось дать удаленный доступ к файлам на компьютер под управлением операционной системы из семейства Linux, то безопаснее всего будет это сделать через SFTP. SFTP обозначает SSH File Transfer Protocol, и не имеет никакого отношения к обычному FTP протоколу, а так же в разы безопаснее. Однако, приступим к настройке.
Создание пользователя для SFTP
Создаем нового пользователя:
-m — указывает необходимость создать домашнюю директорию пользователя в каталоге /home;
-s — задает оболочку пользователя — /sbin/nologin запрещает пользователю использовать shell.
crazyadmin — имя пользователя
Устанавливаем созданному пользователю пароль:
Если что-то пошло не так, то всегда можно удалить пользователя командой userdel username, например:
И создадим для нового пользователя папку chroot, о её предназначении будет рассказано ниже.
Настройка сервера SSH
Теперь отправляемся в конфиг SSH — /etc/ssh/sshd_config
Ищем следующую строчку:
Теперь отправляемся в самый конец конфига, и там дописываем:
ChrootDirectory — родительский каталог той папки, к которой мы хотим открыть доступ по SFTP. В данном примере используется директория chroot, которая лежит в папке пользователя.
Если на вашем сервере настроен доступ по SSH только через файл ключа, а нужно сделать возможность заходить по паролю, то тогда дописываем еще следующее:
После завершения всех манипуляций с SSH сервером, его нужно перезагрузить:
Настройка директорий для пользователя SFTP
Отправляемся в директорию /home и там ищем папку свежесозданного пользователя, а в ней папку chroot. Устанавливаем её владельцем пользователя root:
Устанавливаем нужные права на папку:
Теперь представим, что нам нужно предоставить доступ к нескольким папкам, и они все лежат за пределами ChrootDirectory. Выход из ситуации следующий:
Допустим нам нужно разрешить доступ к папке /var/www/sysadmin.ru. Создаем в домашнем каталоге пользотвателя /home/crazyadmin папку с названием sysadmin.ru.
Теперь смонтируем в эту папку ту директорию, доступ к которой нам нужно обеспечить:
Выставляем необходимые для редактирования права для нашей директории /var/www/sysadmin.ru:
Если в процессе монтирования директории что-то пошло не так, то можно убрать монтирование командой unmount:
На этом настройка SFTP сервера завершена.
Частые ошибки
- fatal: bad ownership or modes for chroot directory component — как писалось выше, данная ошибка появляется тогда, когда владельцем ChrootDirectory является не пользователь root, и права не равны 755.
- No supported authentication methods available (server sent public key) — сервер настроен на авторизацию по ключу. Если нужна авторизация по паролю, то в конфиге /etc/ssh/sshd_config нужно поменять значение у переменной PasswordAuthentication с no на yes, а после перезапустить сервер командой service ssh restart.
Была ли эта статья Вам полезна?
Комментарии к статье (9)
-
- Sergey
- 30.07.2019 21:54
Такая же ошибка как у Сергея, под crazyadmin не хочет подключатся, а под root сразу заходит.
Команда: open «crazyadmin@192.168.1.50» 22
Команда: Pass: *****
Ошибка: Network error: Software caused connection abort
Ошибка: Невозможно подключиться к серверу
Статус: Отключен от сервера
Статус: Соединяюсь с 192.168.1.50.
Статус: Connected to 192.168.1.50
Статус: Получение списка каталогов.
Статус: Listing directory /root
Статус: Список каталогов «/root» извлечен
OpenSSH сервер обновлен, Iptables и антивирус отключены. Проверял на FileZilla и на WinSCP.
Статья видимо утратила актуальность, либо подходит для конкретного дистрибутива.
Мне нужно было на oracle linux настроить и начал с этой статьи, в итоге мучался с тем как всё исправить потом.
Так вот. Более толково написано здесь https://wiki.enchtex.info/howto/ssh_sftp.
Проверенно:
— юзера нужно делать командой useradd -d /dev/null -M -s /bin/bash user
Иначе ssh не работает для него нормально. Если Вы накуралесили как я, то поможет команда usermod -s /bin/bash user (вместо user имя Вашего пользователя).
— команда рестарта ssh для Oracle Linux имеет вид service sshd restart
— Чтобы можно было подключиться через winscp Вашим пользователем — нужно в файл /etc/ssh/sshd_config вписать как указано ниже слово в слово. Даже если имя пользователя другое — строка «Match User user» должна быть без изменений (получено методом ошибок).
Subsystem sftp internal-sftp
Match User user
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ForceCommand internal-sftp
ChrootDirectory /home
Если домашний каталог пользователя указать в /dev/null, то невозможно будет сделать авторизацию по ключам, так как негде будет их хранить. Все прекрасно работает и любой нормальном папкой в качестве домашнего каталога, важно чтобы владелец его был root:root и права записи были только у него (750 или 755 на ваш выбор).
При подключении вот такое в filezilla:
Статус: Соединяюсь с xxx.
Ответ: fzSftp started, protocol_version=8
Команда: open «dmitry@xxx» 22
Команда: Pass: **********
Ошибка: Server unexpectedly closed network connection
Ошибка: Невозможно подключиться к серверу
На ум приходит несколько вариантов:
- Старая версия OpenSSH сервера, попробуйте узнать её с помощью команды sshd -V . Если версия ниже 6.3p1, то вам нужно обновить OpenSSH сервер.
- Что-то обрывает связь между Вами и сервером (антивирус, фаирволл у клиента или сервера).
Сделал все, как в статье. Но на команду service ssh restart Shell реагирует
Redirecting to /bin/systemctl start ssh.service
Failed to start ssh.service: Unit not found.
И пользователь через WinSCP не может пробиться. И Выдает:
Authentication log (see session log for details):
Using username «userSFTP».
Authentication failed.
The server rejected SFTP connection, but it listens for FTP connections.
Did you want to use FTP protocol instead of SFTP? Prefer using encryption.
Причем, пользователь root заходит без проблем.
По поводу не рабочей команды service ssh restart — какой у вас дистрибютив Linux? Попробуйте команду systemctl restart ssh .
По поводу авторизации — а Вы уверены, что у вас пользователь действительно зовется userSFTP? По умолчанию, Linux не дает использовать заглавные буквы в имени пользователя, убедитесь в правильности его имени и вообще существования в системе.
Ребята, подскажите пожалуйста в чем может быть проблема.
Конфигурация:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp
Match User testuser
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ForceCommand internal-sftp
ChrootDirectory %h/chroot
(/home/testuser — root:root; /home/testuser/chroot — testuser:testuser)
1. В параметре MatchUser — работает, только если указывать группу, а не пользователя. Если прописывать параметр MatchGroup — то не работает.
2. При подключении вижу все корневые папки.
В логах есть что-нибудь, какие-нибудь ошибки?
И как минимум я вижу, что у /home/testuser владельцем должен быть testuser, а у /home/testuser/chroot владельцем должен быть root:root.
Источник