Ubuntu подключение по sftp

Обновлено: 06.07.2024

SFTP доступен по умолчанию без дополнительной настройки на всех серверах, имеющих доступ по SSH. Как следует из названия протокола, это безопасный способ передачи файлов на сервер с использованием зашифрованного SSH-соединения. В стандартной конфигурации сервер SSH предоставляет доступ к передаче файлов и к оболочке терминала всем системным пользователям с учетной записью.

Это не очень удобно, иногда нужно предоставить пользователю доступ по SFTP для передачи файлов, но запретить доступ к терминалу. Для начала добавим такого пользователя, потом ограничим его права и создадим каталог, куда это пользователь сможет загружать файлы.

Создание пользователя

Итак, создаем нового пользователя, основную группу и задаем пароль:

Создание каталога

Чтобы ограничить доступ пользователя к SFTP одним каталогом, сначала нужно убедиться, что каталог соответствует требованиям. Сам каталог и все каталоги над ним в дереве файловой системы должны принадлежать root , а другие пользователи не должны иметь права на запись в них. Следовательно, невозможно просто предоставить ограниченный доступ к домашнему каталогу пользователя, поскольку домашние каталоги принадлежат пользователям, а не root .

В качестве целевого каталога загрузки будем использовать /srv/sftp/sftp-user . Каталог /srv/sftp будет принадлежать пользователю root и заблокирован для других пользователей. Подкаталог /srv/sftp/sftp-user будет принадлежать пользователю sftp-user , так что он сможет загружать в него файлы.

Конфигурация ssh-сервера

На этом этапе нужно изменить конфигурацию ssh-сервера и заблокировать пользователю sftp-user доступ к терминалу, но разрешить доступ к передаче файлов. Открываем на редактирование файл конфигурации ssh-сервера и дописываем в конец

С функциональной точки зрения sftp-server и internal-sftp практически идентичны. Они построены из одного и того же исходного кода и реализуют SFTP-сервер. Sftp-server это отдельный бинарный файл, а internal-sftp это просто ключевое слово конфигурации. При указании internal-sftp будет использован встроенный SFTP-сервер, вместо запуска внешнего SFTP-сервера. В настоящее время sftp-server является избыточным и сохраняется для обратной совместимости.

Тестирование конфигурации

Пользователь sftp-user не может подключиться по ssh и получить доступ к терминалу:

Но пользователь sftp-user может использовать SFTP для передачи файлов:

Основные команды SFTP

Оказавшись в командной строке sftp можно получить список доступных команд с помощью команды help

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Руководство по настройке SFTP-сервера в Linux

(1 оценок, среднее: 5,00 из 5)

Руководство по настройке SFTP-сервера в Linux

S FTP расшифровывается как SSH File Transfer Protocol. Если вы догадались, это хорошо. Это версия FTP, которая использует SSH сверху. Это позволяет пользователям загружать и скачивать файлы на сервер Linux и с него через зашифрованное соединение. FTP делает то же самое без шифрования, и именно поэтому SFTP сейчас предпочитают FTP.

Давайте посмотрим, как вы можете настроить SFTP-сервер в системе Linux.

Настройка SFTP-сервера в Linux

Мы использовали Ubuntu в этой статье. Команды установки специфичны для Ubuntu и Debian, но остальные шаги можно выполнить в любом другом дистрибутиве Linux.

Для выполнения шагов вам необходимы права sudoer. Поэтому, если вы не обладаете правами sudo, обратитесь к системному администратору. Если вы один из них, пожалуйста, прочитайте о создании пользователя sudo в Ubuntu.

Настройка SFTP очень проста. Прежде чем перейти к этому, вам необходимо установить OpenSSH на стороне сервера и пакет SSH на стороне клиента.

Чтобы установить OpenSSH на сервере, вы можете использовать следующую команду:

Вам также нужен SSH в системе, откуда вы собираетесь получить доступ к SFTP-серверу.

После того, как это будет сделано, у вас будет все готово для настройки SFTP. Это сделано в три этапа, и мы собираемся показать вам их один за другим.

Шаг 1: Создание групп, пользователей, каталогов

Для безопасного использования SFTP (или любой другой службы в целом) лучше всего создавать группы и пользователей, которые будут использовать эту службу и только эту службу. «Лучше всего дать одно конкретное право одной конкретной организации».

В случае, если вы хотите предоставить доступ SFTP, а также нормальный доступ к системе, создайте пользователей таким образом, чтобы их было легко идентифицировать в соответствии с услугой. Например, если andreyex используется для нормального доступа к системе, тогда andreyexsftp может использоваться для доступа SFTP. Используя этот метод будет легче на стороне администрации.

Давайте создадим группу с именем «sftpg» следующим образом:

Давайте создадим пользователя с именем andreyexftp, добавим его в указанную выше группу и дадим ему пароль.

В приведенной выше команде опция -g указывает группу, в которую следует добавить пользователя. Вы можете перечислить всех пользователей в Linux и убедиться, что новый пользователь добавлен.

Предположим, вы хотите использовать каталог /data/в качестве корня для sftp и /data/USERNAME для каждого пользователя. Поэтому, когда пользователи входят в систему через sftp, они должны находиться в /data/USERNAME в качестве каталога по умолчанию (точно так же, как вы находитесь в каталоге /home/USERNAME,когда вы входите в систему Linux через SSH). Кроме того, примите ограничение, что они могут читать файлы из этого каталога, но могут загружать только в каталог загрузки.

Давайте создадим каталоги и изменим их доступ и владельца следующим образом (читайте о правах доступа к файлам в Linux, чтобы узнать больше об этом).

На данный момент у нас есть пользователь с именем andreyexsftp с группой sftpg и с правами доступа, установленными для /data/andreyexsftp.

Шаг 2. Настройте sshd_config

Далее это вам нужно настроить SSH сервер таким образом, что всякий раз, когда пользователь, принадлежащий к группе sftpg входит в систему, он/она попадает в SFTP вместо обычной оболочки вы получите через SSH . Добавьте следующий фрагмент в /etc/ssh/sshd_config, если его еще нет.

Шаг 3: Перезапустите сервис

Чтобы внести изменения, внесенные в sshd_config, перезапустите службу следующим образом.

Доступ к SFTP через командную строку Linux

Вы можете войти в SFTP, как вы это обычно делаете с SSH.

Примеры команд SFTP

Команды SFTP обычно имеют следующий формат.

Для любой команды аргументами могут быть пути локальной системы или пути удаленной системы. Там нет конкретного видимого различия между ними. Вы можете указать путь как обычно после рассмотрения того, является ли аргумент локальным или удаленным.

/Pictures локальной системы.

/Pictures/poster2.jpg в нашу папку загрузок.

Вышеуказанные команды очень просты и достаточны для изучения FTP /SFTP-сервера. Если вы хотите узнать больше, используйте команду help.

Мы надеемся, что эта статья помогла вам в настройке SFTP-сервера в Linux.

Расскажите нам в комментариях о настройке вашей файловой системы SFTP. Это как упомянуто в этой статье или объединенный каталог или что-нибудь еще?

Если вы нашли эту статью полезной, поделитесь ею с друзьями. Если у вас есть предложения, не стесняйтесь оставить их ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Мануал

FTP, акроним File Transfer Protocol используется для передачи файлов между компьютером и сервером в данной компьютерной сети.

Протокол FTP использует небезопасный способ передачи данных и должен быть ограничен сетью, в которой вы доверяете.

Вместо этого у нас должен быть SFTP (File Transfer Protocol SSH), который использует безопасное соединение SSL между двумя концами.

В этой статье приводятся подробные инструкции по настройке защищенного сервера vsftpd с SSL / TLS на Ubuntu 18.04 и подключение к серверу с помощью терминала и инструментов графического интерфейса.

Установка сервера VSFTPD

Для этого в Ubuntu 18.04 мы вводим следующую команду в терминал:
После установки vsftpd файл конфигурации по умолчанию находится в файле /etc/vsftpd.conf. Чтобы внести изменения в этот файл и протестировать пользовательские конфигурации, сначала создадим резервную копию этого файла. Затем мы создаем файл vsftpd.conf со следующей командой:

и добавьте в файл следующие строки

Обратите внимание, что это наиболее часто используемые конфигурации, и вы можете изменять их в соответствии с вашими потребностями. Ubuntu 18.04 поставляется с предустановленным и включенным ufw (Uncomplicated firewall). Вы можете проверить, работает ли ufw на вашем компьютере с помощью этой команды: Если он запущен, и вы собираетесь его запустить, вы должны разрешить входящий трафик для FTP-портов (20,21 для активных подключений и 10000-10100 для пассивных). В случае успеха вывод будет выглядеть следующим образом:

После выполнения всех этих действий нам необходимо перезапустить сервер vsftpd с помощью следующей команды:

Создание пользователя для подключения к FTP-серверу

Когда сервер vsftp установлен и настроен в соответствии с нашими потребностями, нам не нужно создавать пользователя (например, ftpsuer) для подключения к ftp-серверу.

Для этого вы можете запустить:

Создайте пароль для вновь созданного пользователя с помощью следующей команды:

После того, как вам будет предложено ввести новый пароль UNIX и повторно введите его для внесения изменений.

Успешный вывод выглядит следующим образом:

Подготовить каталог пользователей FTP

Одним из наиболее важных действий, которые необходимо предпринять для защиты FTP-соединения, является ограничение доступа пользователей к их домашнему каталогу, чтобы они вообще не имели доступа к другим каталогам.

Для этого в vsftpd нам нужно включить chroot в файле конфигурации, который мы уже делали в части конфигурации статьи (chroot_local_user = YES).

Способ защиты каталога vsftpd предполагает, что пользователь не имеет права на запись в него.

Но если мы предоставляем FTP-доступ существующим пользователям, и они используют оболочку для использования сервера, им может потребоваться доступ к записи в их домашнюю папку.

Чтобы избежать отсутствия безопасности, а также иметь правильный FTP-доступ для пользователя, мы создаем ftp-папку в домашнем каталоге пользователя и добавляем ее в конфигурацию vsftpd как локальный root при подключении через FTP.

Также нам нужно изменить права собственности на каталог и удалить доступ на запись.

Для этого вы можете запустить:

затем добавьте / измените следующие строки в файле конфигурации vsftpd /etc/vsftpd.conf

После выполнения этих шагов нам нужно создать еще одну папку в /home/ftpuser/ftp и назначить ее владельцу пользователя

Чтобы проверить, что мы можем просматривать файлы в домашнем каталоге пользователя после подключения к FTP-серверу, мы собираемся создать тестовый файл в этом каталоге и добавить в него некоторый текст.

Для этого вы можете запустить:

Настройка SSL для VSFTPD

Поскольку данные (даже учетные данные), переданные по FTP, не зашифрованы, мы можем включить TLS / SSL для обеспечения другого уровня безопасности для нашего FTP-сервера.

Чтобы создать сертификат с помощью openssl, выполните следующие действия:

Вам будет предложено добавить всю необходимую информацию для создания сертификата, как показано ниже

После создания сертификата нам нужно добавить его в файл конфигурации vsftpd и включить SSL.

Для этого добавьте следующую строку в указанный файл:

осле того, как нам нужно отклонить анонимные подключения через SSL и потребовать SSL для передачи данных и входа в систему.

Для этого добавьте следующие строки в файл /etc/vsftpd.conf:

Как только добавленные строки добавлены, мы настроим сервер для использования TLS, который является предпочтительным преемником SSL.

Для этого добавьте следующие строки в один и тот же файл:

После всех шагов наш файл конфигурации vsftpd будет выглядеть так:

После любых изменений в файле конфигурации vsftpd нам необходимо перезапустить службу следующей командой:

Вы также можете настроить vsftpd для использования letencrypt сертификата для sftp, но убедитесь, что у вас есть домен для проверки.

Вы можете добавить переменную пути в конфигурацию vsftpd, где хранится ключ ssl и private.

Подключение к FTP-серверу

Существует два способа подключения к ftp-серверу:

  • используя терминал
  • использование FTP-клиента с графическим интерфейсом

Подключение через терминал

Чтобы подключиться к ftp-серверу через командную строку, введите следующую команду в терминал:

Убедитесь, что машина ftp-сервера доступна через имя хоста из машины, которую вы пытаетесь подключить.

После подключения вам будет предложено ввести имя пользователя и пароль для подключения к ftp-серверу:

Введите ls, чтобы проверить, существует ли созданный ранее тестовый файл:

Подключение с помощью FTP-клиента с графическим интерфейсом

Мы собираемся использовать Filezilla для подключения к нашему FTP-серверу, установленному в Linux.

Для этого откройте клиент Filezilla на вашем компьютере и введите IP-адрес сервера FTP, учетные данные ftpuser для подключения и нажмите кнопку подключения, как показано на скриншоте ниже.

Вам будет предложено добавить доверенный сертификат, после которого вы сможете подключиться к FTP-серверу.


В этом руководстве мы покажем вам, как подключиться к серверам SFTP в Ubuntu, а также как настроить собственный сервер для размещения. Для начала убедитесь, что вы используете последнюю версию Ubuntu для настольных ПК, серверов или ОС на основе Ubuntu.

Настройте SFTP в Ubuntu

Если вы планируете подключиться к SFTP-серверу на своем ПК с Ubuntu, вам необходимо настроить SSH-сервер на удаленном сервере Ubuntu или удаленном ПК с Ubuntu, чтобы вы могли получить к нему доступ. К счастью, настроить SSH-сервер в Ubuntu невероятно просто.

Для начала откройте окно терминала на рабочем столе Ubuntu. Вы можете запустить окно терминала, нажав Ctrl + Alt + T на клавиатуре. Или найдите «Терминал» в меню приложения Ubuntu и запустите его таким образом.

В открытом окне терминала используйте команду apt install, чтобы установить пакет «openssh-server». После установки этот пакет настроит и настроит SSH-сервер, а также SFTP, к которому вы можете получить удаленный доступ.

Когда сервер OpenSSH запущен и работает на удаленном компьютере, вы можете выполнить быстрый тест, чтобы убедиться, что вы можете подключиться к нему. Для этого запустите ssh your-username @ localhost на машине с SSH-сервером. Вы должны использовать свой пароль для входа в систему.

Проверь это - Как установить Windows на Mac с помощью Boot Camp [Guide]

Подключение к SFTP через командную строку

Чтобы подключиться к серверу SFTP с помощью командной строки в Ubuntu, начните с запуска окна терминала. Затем, в открытом окне терминала, используйте команду sftp для подключения к вашему SSH-серверу.

Для подключения укажите имя пользователя на удаленном компьютере, а также его IP-адрес. Например, если удаленный сервер Ubuntu или ПК Ubuntu, на котором размещен SSH-сервер, имеет IP-адрес «192.168.1.203», используйте его в качестве имени хоста.

После подключения вы можете запустить команду ls, чтобы просмотреть, что находится на удаленном сервере.

Чтобы загрузить что-либо с удаленного сервера в домашний каталог, укажите имя файла на удаленном сервере SFTP и используйте команду get.

Нужно что-то загрузить на удаленный SFTP-сервер? Используйте команду put. Он загрузит любой файл на удаленный SFTP-сервер в вашу локальную домашнюю папку (/ home / USERNAME /).

Проверь это - Как распечатать список писем из папки Outlook

Для начала запустите на рабочем столе файловый менеджер Ubuntu. Когда он открыт, найдите кнопку «Другие места» и щелкните по ней. Когда вы нажмете эту кнопку, вы попадете в область «Другие места».


Внутри «Другие места» найдите текстовое поле «Подключиться к серверу» и щелкните его мышью. Затем введите адрес сервера. Например:

После ввода IP-адреса (или имени хоста) в поле нажмите кнопку «Подключиться». Когда вы нажимаете эту кнопку, появляется всплывающее окно. Затем введите свое имя пользователя и пароль, затем снова нажмите «Подключиться».


После подключения вы увидите свой SFTP-сервер в приложении файлов Ubuntu. Перетащите файлы на сервер, чтобы загрузить их, и скопируйте их в другие папки на своем ПК, чтобы загрузить.

Подключение к SFTP с помощью Filezilla в Ubuntu

Сначала необходимо установить приложение, чтобы подключиться к серверу SFTP с помощью Filezilla в Ubuntu. Затем откройте окно терминала на рабочем столе Ubuntu и используйте команду ниже, чтобы установить приложение.

Как только программа будет установлена ​​в вашей системе, запустите ее. Затем найдите поле хоста и введите приведенный ниже код.

Проверь это - Как перейти на iOS с устройства Android с помощью приложения Apple


Отсюда вы можете загружать и скачивать файлы на свой SFTP-сервер из Ubuntu. Если вы хотите загрузить файл, вот что нужно сделать. Сначала щелкните правой кнопкой мыши нужный файл в правом столбце. Затем выберите вариант «Загрузить» для загрузки.

Вы также можете загружать файлы из Ubuntu с помощью Filezilla. Для этого щелкните правой кнопкой мыши файл в левом столбце. Затем нажмите кнопку «Загрузить». Это отправит файл на сервер SFTP.

Как использовать команду SFTP для передачи файлов Linux

SFTP (SSH File Transfer Protocol) - это защищенный файловый протокол, используемый для доступа, управления и передачи файлов по зашифрованному транспортному протоколу SSH.

По сравнению с традиционным протоколом FTP , SFTP предлагает все функции FTP, и его проще настраивать.

В отличие от того scp command , который разрешает только передачу файлов, sftp команда позволяет выполнять ряд операций с удаленными файлами и возобновлять передачу файлов.

Прежде чем вы начнете

Чтобы иметь возможность передавать и управлять файлами через SFTP, вы должны иметь разрешение на запись в удаленной системе.

При передаче больших файлов рекомендуется запускать команду sftp внутри сеанса экрана или tmux .

Каталог, из которого вы запускаете sftp команду, является локальным рабочим каталогом.

Установление SFTP-соединения

SFTP работает по модели клиент-сервер. Это подсистема SSH и поддерживает все механизмы аутентификации SSH.

Хотя традиционная аутентификация по паролю настроена по умолчанию и более проста в использовании, если вы регулярно подключаетесь к своему серверу через SSH / SFTP, рекомендуется создать ключи SSH и настроить логин SFTP без пароля .

Чтобы открыть SFTP-соединение с удаленной системой, используйте sftp команду, за которой следует имя пользователя удаленного сервера и IP-адрес или имя домена:

Если вы подключаетесь к хосту с использованием аутентификации по паролю, вам будет предложено ввести пароль пользователя.

После подключения вам будет предложено sftp приглашение и вы сможете начать взаимодействие с удаленным компьютером:

Если удаленный сервер SSH не прослушивает порт по умолчанию 22, используйте -oPort параметр, чтобы указать альтернативный порт:


Команды SFTP

Большинство команд SFTP похожи или идентичны командам, которые вы используете в командной строке Linux.

Вы можете получить список всех доступных команд SFTP, набрав help или ? .

Навигация по SFTP

Когда вы вошли на удаленный сервер, текущим рабочим каталогом является домашний каталог удаленного пользователя. Вы можете проверить это, набрав:

Для просмотра списка файлов и каталогов используйте ls команду:

Чтобы перейти в другой каталог, используйте cd команду. Например, чтобы перейти в /tmp каталог, вы должны набрать:

Вышеуказанные команды используются для навигации и работы в удаленном местоположении.

sftp Оболочка также предоставляет команды для местной навигации, информации и управления файлами. Локальные команды начинаются с буквы l .

Например, чтобы напечатать локальный рабочий каталог, вы должны набрать:

Передача файлов с SFTP

С SFTP вы можете безопасно передавать файлы между двумя компьютерами.

Если вы работаете на настольном компьютере, вы можете использовать SFTP-клиент с графическим интерфейсом, например WinSCP или FileZilla, для подключения к удаленному серверу и загрузки или загрузки файлов.

Эта sftp команда полезна, когда вы работаете на сервере без графического интерфейса и хотите передавать файлы или выполнять другие операции с удаленными файлами.


Загрузка файлов с помощью команды SFTP

После входа на удаленный сервер текущим рабочим каталогом является домашний каталог удаленного пользователя.

При загрузке файлов с помощью sftp команды они загружаются в каталог, из которого вы ввели sftp команду.

Чтобы загрузить один файл с удаленного сервера, используйте get команду:

Вывод должен выглядеть примерно так:

Если вы хотите сохранить загруженный файл под другим именем, укажите новое имя в качестве второго аргумента:

Чтобы загрузить каталог из удаленной системы, используйте рекурсивный -r параметр:

Если передача файла не удалась или была прервана, вы можете возобновить ее, используя reget команду.

Синтаксис reget такой же, как и синтаксис get :


Загрузка файлов с помощью команды SFTP

Чтобы загрузить файл с локального компьютера на удаленный SFTP-сервер, используйте put команду:

Вывод должен выглядеть примерно так:

Если файл, который вы хотите загрузить, не находится в вашем текущем рабочем каталоге, используйте абсолютный путь к файлу.

При работе с put вами можно использовать те же параметры, которые доступны с помощью get команды.

Чтобы загрузить локальный каталог, вы должны набрать:

Чтобы возобновить прерванную загрузку:


Файловые манипуляции с SFTP

Как правило, для выполнения задач на удаленном сервере вы должны подключиться к нему через SSH и выполнять свою работу с помощью терминала оболочки. Однако в некоторых ситуациях пользователь может иметь только SFTP-доступ к удаленному серверу.

SFTP позволяет выполнять некоторые основные команды для работы с файлами. Ниже приведены некоторые примеры использования оболочки SFTP:

Получите информацию об использовании диска удаленной системы :

Создайте новый каталог на удаленном сервере:

Переименуйте файл на удаленном сервере:

Удалить файл на удаленном сервере:

Удалить каталог на удаленном сервере:

Измените права доступа к файлу в удаленной системе:

Измените владельца файла в удаленной системе:

Вы должны указать идентификатор пользователя к chown и chgrp командам.

Измените владельца группы удаленного файла с помощью:

По завершении работы закройте соединение, набрав bye или quit .


Вывод

В этом руководстве мы показали, как использовать sftp команду для загрузки и выгрузки файлов на удаленный SFTP-сервер.

Вы также можете настроить аутентификацию на основе ключей SSH и подключаться к серверам Linux без ввода пароля.

Если вы регулярно подключаетесь к одним и тем же системам, вы можете упростить рабочий процесс, определив все свои подключения в конфигурационном файле SSH .

Читайте также: