Как подключиться по sftp linux

Как установить и использовать SFTP на серверах Linux

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

В настоящее время рекомендуется использовать SFTP вместо устаревшего старого протокола FTP или FTP/S. SFTP по умолчанию безопасен, потому что так работает SSH. С точки зрения безопасности SFTP также защищает вас от перехвата пароля и атаки «человек посередине» (MiTM).

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

Предпосылки

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

Ниже приведена текущая среда для реализации:

  • Сервер Linux — вы можете использовать Debian, Ubuntu, CentOS, Fedora, Rocky или любой другой дистрибутив Linux.
  • Убедитесь, что пакеты OpenSSH доступны в вашей системе Linux.
  • Клиент SFTP — командная строка sftp или любой клиент с графическим интерфейсом по вашему выбору.

Проверка пакетов OpenSSH

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

1. Чтобы убедиться, что пакеты OpenSSH установлены в вашей системе Linux, используйте следующую команду.

Для серверов Debian или Ubuntu вы можете использовать приведенную ниже команду dpkg.

Ниже приведен вывод нашей системы Debian.

ii libssh2-1:amd64 1.9.0-2 amd64 SSH2 client-side library
ii openssh-client 1:8.4p1-5 amd64 secure shell (SSH) client, for secure access to remote machines
ii openssh-server 1:8.4p1-5 amd64 secure shell (SSH) server, for secure access from remote machines
ii openssh-sftp-server 1:8.4p1-5 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines

Первый столбец ii означает, что пакет установлен. Пакет openssh-sftp-server установлен в системе Debian/Ubuntu.

Для пользователей RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux вы можете использовать команду rpm, как показано ниже.

Создать группу и пользователя

На этом этапе вы создадите новую группу и пользователя для SFTP-сервера. Пользователям в этой группе будет разрешен доступ к SFTP-серверу. А по соображениям безопасности пользователи SFTP не могут получить доступ к службе SSH. Пользователи SFTP получают доступ только к серверу SFTP.

Читайте также:  Что такое лор linux

1. Выполните следующую команду, чтобы создать новую группу sftpgroup.

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

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser
  • -G : автоматически добавить пользователя в sftpgroup.
  • -d : указать домашний каталог для нового пользователя.
  • -s : установить для нового пользователя значение по умолчанию /sbin/nologin, что означает, что пользователь не может получить доступ к SSH-серверу.

3. Затем создайте пароль для пользователя sftpuser с помощью приведенной ниже команды.

Введите надежный пароль и повторите его, затем нажмите Enter для подтверждения.

Чтобы добавить других пользователей, повторите этапы 2 и 3 и, что наиболее важно, все пользователи SFTP должны входить в группу sftpgroup без доступа к оболочке через SSH.

Настройка каталога Chroot Jail

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

1. Для пользователя sftpuser новый домашний каталог будет находиться в /srv/sftpuser. Выполните команду ниже, чтобы создать его.

2. Чтобы настроить chroot для пользователя sftpuser, вы должны сменить владельца каталога на пользователя root, но остаться группой для чтения и выполнения без права записи.

Измените владельца каталога на пользователя root, используя следующую команду.

sudo chown root /srv/sftpuser

Дайте группе разрешение на чтение и выполнение, но не на запись.

sudo chmod g+rx /srv/sftpuser

3. Затем создайте новый каталог данных внутри каталога /srv/sftpuser и измените владельца этого каталога data на пользователя sftpuser.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Ниже приведены подробные сведения о конфигурации пользовательского каталога SFTP.

  • Каталог /srv/sftuser является домашним каталогом по умолчанию.
  • Пользователь sftpuserне может писать в каталог /srv/sftpuser, но может читать внутри этого каталога.
  • Пользователь sftpuser может загружать файлы на сервер SFTP в каталоге /srv/sftpuser/data.

Включить SFTP на SSH-сервере

Чтобы включить SFTP-сервер на OpenSSH, вы должны отредактировать конфигурацию SSH /etc/ssh/sshd_config.

1. Отредактируйте конфигурацию ssh /etc/ssh/sshd_config с помощью nano или vim.

sudo nano /etc/ssh/sshd_config

2. Прокомментируйте следующую конфигурацию, чтобы отключить функцию автономного sftp-сервера.

#Subsystem sftp /usr/lib/openssh/sftp-server

3. Вставьте следующую конфигурацию в конец строки.

Subsystem sftp internal-sftp

Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp

Сохраните конфигурацию и выйдите.

  • Вместо подпроцесса sftp-server использовался internal-sftp.
  • Сервер SFTP включен для группы sftpgroup.

4. Чтобы применить новую конфигурацию, перезапустите службу ssh с помощью приведенной ниже команды.

sudo systemctl restart sshd

Сервер SFTP готов и доступен и работает на том же порту, что и служба SSH.

Доступ к SFTP-серверу

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

1. Чтобы подключиться к SFTP-серверу, выполните команду sftp, как показано ниже.

Если ваш сервер SFTP и/или SSH работает на пользовательском порту, вы можете использовать команду sftp, как показано ниже.

Введите пароль для sftpuser.

2. После подключения к SFTP-серверу выполните следующую команду.

Читайте также:  Zabbix мониторинг логов linux

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

3. Загрузите локальный файл на SFTP-сервер в каталог /, что приведет к отказу в доступе, поскольку это chroot-каталог.

4. Загрузите локальный файл в каталог /data/ на SFTP-сервере. Если ваша конфигурация верна, ваш файл будет загружен в каталог /data/.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5. Теперь проверьте доступные файлы в каталоге /data с помощью следующей команды.

И вы увидите, что ваш файл загружен на SFTP-сервер.

Заключение

Поздравляем! Вы успешно настроили SFTP-сервер в системе Linux. Этот тип конфигурации можно применять в большинстве систем Linux с установленным поверх него OpenSSH. Кроме того, вы узнали, как настроить каталог chroot для пользователей SFTP, и изучили базовую команду клиента sftp.

Источник

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

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

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

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

В этом руководстве мы покажем вам, как использовать команду Linux sftp .

Подготовка

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

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

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

Не путайте SFTP с FTPS. Оба протокола служат одной цели. Однако FTPS означает FTP Secure и является расширением стандартного протокола FTP с поддержкой TLS.

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

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

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

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

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

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

Команды SFTP

Большинство команд SFTP похожи или идентичны командам оболочки Linux.

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

Это выведет длинный список всех доступных команд, включая краткое описание каждой команды:

Available commands: bye Quit sftp cd path Change remote directory to 'path' . . version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell ? Synonym for help 

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

Remote working directory: /home/remote_username 

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

Читайте также:  Linux mint переименовать файл

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

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

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

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

Local working directory: /home/local_username 

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

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

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

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

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

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

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

Fetching /home/remote_username/filename.zip to filename.zip /home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13 

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

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

get filename.zip local_filename.zip

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

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

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

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

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

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

Uploading filename.zip to /home/remote_username/filename.zip filename.zip 100% 12MB 1.7MB/s 00:06 

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

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

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

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

Манипуляции с файлами с помощью SFTP

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

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

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

 Size Used Avail (root) %Capacity 20616252 1548776 18002580 19067476 7%
rename file_name new_file_name

Когда вы закончите свою работу, закройте соединение, набрав « bye или « quit .

Выводы

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

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

Не стесняйтесь оставлять комментарии, если у вас есть вопросы или отзывы.

Оцените статью
Adblock
detector