Sftp клиенты для windows, linux, macos, android

Настройка директорий для пользователя SFTP

Отправляемся в директорию /home и там ищем папку свежесозданного пользователя, а в ней папку chroot. Устанавливаем её владельцем пользователя root:

Устанавливаем нужные права на папку:

Внимание! Ни в коем случае не следует выставлять ChrootDirectory какие-либо другие права, в таком случае будет выскакивать следующая ошибка: fatal: bad ownership or modes for chroot directory component.

Теперь представим, что нам нужно предоставить доступ к нескольким папкам, и они все лежат за пределами ChrootDirectory. Выход из ситуации следующий:

Допустим нам нужно разрешить доступ к папке /var/www/sysadmin.ru. Создаем в домашнем каталоге пользотвателя /home/crazyadmin папку с названием sysadmin.ru.

Теперь смонтируем в эту папку ту директорию, доступ к которой нам нужно обеспечить:

Выставляем необходимые для редактирования права для нашей директории /var/www/sysadmin.ru:

Если в процессе монтирования директории что-то пошло не так, то можно убрать монтирование командой unmount:

На этом настройка SFTP сервера завершена.

Accessing SFTP via Linux command line

You can login into SFTP as you normally would do with SSH.

Sample SFTP commands

SFTP commands are usually of the following format.

For any command, arguments may be either local system paths or remote system paths. There is no specific visible distinction between them. You can specify the path as normal after considering the whether the argument is local or remote.

GET – download contents from remote server to the local system. Below command downloads remote file poster.img to the local system’s ~/Pictures directory.

PUT – Upload contents form the local system to the remote system. Below command uploads the ~/Pictures/poster2.jpg into my uploads directory.

RM – To remove the files in the remote system. This is very similar to rm command. You can see that from below command which deletes an image at uploads/poster3.jpg

Above commands are very basic and are sufficient enough to explore the FTP/SFTP server. If you want to know more, either use command or use this resource.

I hope this article helped you in setting up SFTP server on Linux.

Tell us in comments about what is your SFTP file system setup. Is it like mentioned in this article or a pooled directory or anything else?

1. Copy file from remote server to local machine windows

We can use connect to our SFTP Server from Windows machine using any SFTP Client such as WinSCP, FileZilla etc. The SFTP syntax for destination may be specified either as or as a URI in the form

sftp://host

I will use WinSCP on my Windows Laptop to connect to our Linux SFTP Server. Provide the IP Address and other User credential to login to SFTP server using WinSCP

Advertisement

Once connected you can now copy file from remote server to local machine windows or vice versa.

Assuming the user has enough privilege you should be able to copy file from remote server to local machine windows or vice versa.

Установка OpenSSH в Ubuntu

Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:

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

Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:

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

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя@ip_адрес

5. SFTP commands to upload directory from local to remote server

I could not find a single line SFTP put command to upload directory from local to remote server, if you come across any such one liner SFTP put command do let me know via comment section

I have used an alternate approach to combine all the SFTP commands by using tag.

IMPORTANT NOTE:
While trying to upload directory from local to remote server it is important that the directory name which you plan to upload, a directory with the same name also must exist on your SFTP server. For example I have on , before I attempt to transfer I also have to create «» on before I attempt the upload from local to remote server.

# sftp deepak@sftp-server <<EOF
> cd dest_dir
> mkdir sftp-client_dir
> put -r /tmp/sftp-client_dir <-- SFTP put command to upload /tmp/sftp-client_dir to sftp-server
> quit
> EOF
Connected to deepak@sftp-server.
sftp> cd dest_dir
sftp> mkdir sftp-client_dir
sftp> put -r /tmp/sftp-client_dir
Uploading /tmp/sftp-client_dir/ to /dest_dir/sftp-client_dir
Entering /tmp/sftp-client_dir/
sftp> quit

NOTE:

It is possible you may get «». This means that the directory does not exist on SFTP server which you are planning to upload. Using SFTP CLI this is a pre-requisite to have a directory already exist with the same name before uploading directory.

sftp> put -r /tmp/sftp-client_dir sftp-client_dir
Uploading /tmp/sftp-client_dir/ to /sftp-client_dir
Couldn't canonicalize: No such file or directory
Unable to canonicalize path "/sftp-client_dir"

Настройка домашних папок пользователей

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

Уберём право на запись для папки ftp:

Затем дайте необходимые полномочия пользователю на запись в подпапку.

Теперь вернёмся к конфигурационному файлу vsftpd.conf. Сначала закомментируйте строчку:

Теперь добавьте такие строчки:

Первая из них добавляет переменную $USER, в которой содержится имя пользователя, а вторая задаёт корневую папку для каждого пользователя. Осталось снова перезапустить FTP-сервер:

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

Управление пользователями

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

useradd — создает на сервере новую учетную запись. По сути, нового пользователя. Синтаксис: useradd имя будущей учетной записи. Имя можно указать любое на свой вкус. Потом останется лишь добавить для нового аккаунта пароль.

passwd — задает пароль для учетной записи. Работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd имя новой учетной записи. После этого система попросит придумать и указать пароль для новой учетной записи.

Система безопасности в Linux не показывает во время ввода пароля даже звездочки, но это не значит, что он не вводится. Продолжайте набирать вслепую, а как закончите, нажмите Enter, и все сработает. И не бойтесь запутаться, вас попросят повторить придуманный пароль.

userdel — удаляет выбранную учетную запись. Синтаксис: userdel имя учетной записи, которую нужно стереть

usermod — вносит изменения в характеристики существующих учетных записей, лишает их контроля или вовсе приостанавливает работу. Делает все, что не связано с созданием и удалением аккаунтов. Используется только вместе с дополнительными опциями:

  • -с — добавляет комментарий к аккаунту (можно вписать любой текст по желанию, чтобы запомнить для чего нужен выбранный пользователь).
  • -d — меняет расположение домашней директории выбранной учетной записи.
  • -e — указывает время, которое будет существовать аккаунт (после этого сработает автоматический userdel).
  • -g — меняет группу, к которой принадлежит аккаунт.
  • -G — привязывает аккаунт к выбранной группе.
  • -L — блокирует пользователя.
  • -m — перемещает контент из домашней папки пользователя в другую папку.
  • -p — устанавливает незашифрованный пароль (лучше так не делать).
  • -s — задает конкретную оболочку для нового аккаунта на усмотрение администратора компьютера.
  • -U — снимает блокировку с выбранной учетной записи.

3. Single line SFTP put command to upload file from local to remote server

Use below SFTP syntax with to upload file from local to remote server using SFTP put command.

sftp @host <<< $'put /local_path/file'

I will create a file under on

Advertisement

# touch /tmp/sftp-client_file

Upload to using single line SFTP put command

# sftp deepak@sftp-server:dest_dir/ <<< $'put /tmp/sftp-client_file'
Connected to sftp-server.
Changing to: /dest_dir/
sftp> put /tmp/sftp-client_file
Uploading /tmp/sftp-client_file to /dest_dir/sftp-client_file
/tmp/sftp-client_file

As you see the one line SFTP command line file upload was successful and since we are , we did not got any SFTP command line password prompt

Установите Win32 OpenSSH на Windows Server 2016/2012 R2

В предыдущих версиях Windows 10 и Windows Server 2016/2012 R2 необходимо загрузить и установить OpenSSH с GitHub. Вам необходимо скачать версию пакета для Windows x64: OpenSSH-Win64.zip (3,5 МБ).

  • Распакуйте архив в целевой каталог: C: \ OpenSSH-Win;
  • Запустите привилегированный клиент PowerShell и перейдите в папку OpenSSH: 
  • Добавьте путь к каталогу OpenSSH в переменную среды Path (Свойства системы -> вкладка «Дополнительно» -> Переменные среды -> Выберите и измените системную переменную Path -> Добавить путь к папке OpenSSH);

Установите сервер OpenSSH: .\install-sshd.ps1(должно появиться зеленое сообщение « Службы sshd и ssh-agent успешно установлены »);

Сгенерируйте ключи SSH для сервера (необходим для запуска службы sshd):ssh-keygen.exe –Assh-keygen: generating new host keys: RSA DSA ECDSA ED25519

  • Включите автозапуск для службы SSHD и запустите его, используя следующие команды управления службой PowerShell:
  • Перезагрузите компьютер:
  • Используйте PowerShell, чтобы открыть TCP-порт 22 в брандмауэре Windows для входящего трафика SSH:

Подключение к SFTP с помощью файлового менеджера Ubuntu — Gnome Files

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

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

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

sftp: //192.168.1.203

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

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

Что такое SFTP?

SFTP ( Secure File Transfer Protocol , Secure FTP или SSH FTP ) является расширением протокола SSH, являющегося стандартом в мире систем UNIX / Linux. С точки зрения пользователя, он похож на FTP, но на самом деле это совершенно другой протокол, не имеющий ничего общего с FTP . Данные передаются между клиентом и сервером через туннель SSH (TCP-порт 22).

Основные преимущества SFTP:

  1. Файлы и команды передаются в безопасном сеансе SSH;
  2. Одно соединение используется для отправки файлов и команд;
  3. Поддерживаются символические ссылки, передача прерываний / возобновлений, функции удаления файлов и т. Д .;
  4. Как правило, в каналах, где FTP работает медленно или не работает, SFTP-соединение работает быстрее и надежнее;
  5. Возможность аутентификации с использованием ключей SSH.

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

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

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

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

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

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

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

Тестирование vsftpd

Сервер готов, но система настроена ещё не полностью. Сначала создадим нашего тестового пользователя с помощью useradd:

Поскольку мы хотим подключаться от его имени к FTP-серверу, то нам нужно добавить его в vsftpd.userlist:

Теперь самое время подключится к нашему FTP-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:

У нас ничего не получится. Теперь попробуем войти от имени нашего тестового пользователя, и всё заработает как нужно.

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

Setting up SFTP Server on Linux

I have used Ubuntu in this tutorial. The installation commands are specific to Ubuntu and Debian but the rest of the steps can be followed in any other Linux distribution.

To perform the steps, you need have sudoer rights. So if you don’t sudo rights, contact your system administrator. If you are the one, please read about creating sudo user in Ubuntu.

Setting up SFTP is very easy. Before going to that, you need to have OpenSSH installed in the server side and SSH package in the client side.

I have discussed setting up SSH on Ubuntu in detail in a separate article, I’ll just mention the important steps here.

To install OpenSSH in server, you can use the following command:

You also need SSH on the system from where you are going to access the SFTP server.

After this is done, you will have everything ready to setup SFTP. It’s done in three steps and I am going to show it to you one-by-one.

Step 1: Create Groups, Users, Directories

To use SFTP (or any other service in general) safely, it is best to create groups and users to use that service and only that service. “It is best to give one specific right to one specific entity”.

In case if you want to give SFTP access and also normal system access, create users such that it is easy to identify them according to service. For example, if seeni is used for normal system access then seenisftp can be used for SFTP access. Using this method will be easier on the administration side.

Let’s create a group named “sftpg” using groupadd command:

Let’s create a user named “seenisftp” and add him to the above group and give him a password.

In the useradd command, -g option tells the group to which user should be added. You can list all the users in Linux and verify that the new user is has added.

Let’s assume you want to use the directory /data/ as your root for sftp and /data/USERNAME for each user. So when users login through sftp, they should be in /data/USERNAME as their default directory (Just like you are in /home/USERNAME directory when you login into the Linux system through SSH). Also, assume a constraint that they can read files from that directory but can upload only to uploads directory.

Let’s create the directories and change their access and ownership as follows (read about file permissions in Linux to know more about it).

One thing that might confuse is giving ownership of the user’s directory to the root itself. This is mandatory for chrooting in SFTP. So make sure that owner of the /data/USERNAME is root.

As of now, we have user named seenisftp with group sftpg and with access permissions set for /data/seenisftp.

Step 2: Configure sshd_config

Next is you need to configure ssh server so that whenever user belonging to sftpg group logs in, he/she gets into sftp instead of the normal shell you get through ssh. Append the following snippet to if not already present.

In the above snippet, ChrootDirectory allows the specified directory to be made as the root (“/” directory ) node in the directory tree. The logged in user cannot see anything above that directory. So it will stop the current user from accessing other user’s files through sftp. %u is the escape code for filling it with the current username at the time of login. When seenisftp logins through sftp, he will be in /data/seenisftp as his root directory. He will not be able to see anything above it.

Установка и ввод в эксплуатацию

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

Одна деталь, которая привлекла наше внимание, заключается в том, что если мы хотим найти программу в нашей операционной системе, нам придется искать «Снежинка», похоже, что в последней версии имя еще не было изменено на «Мюон». ”, Следовательно, мы найдем его под этим именем

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

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

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

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

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

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

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

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

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

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

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

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

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

Нормальный и автономный режимы работы FTP

5.1. Автономный режим

По умолчанию vsftpd запускается в автономном режиме, в котором запускаемая на сервере служба использует собственный стартовый скрипт, называемый демоном. В случае vsftpd это /etc/init.d/vsftpd. Данный автономный демон в момент старта службы FTP берет управление нею на себя. Демон vsftpd предоставляет администратору несколько команд для управления FTP-сервером vsftpd:

start или stop — используется для запуска или остановки ftp-сервера.status — выводит подробную информацию о текущем состоянии вашего FTP-сервера.restart — это альтернатива последовательности из остановки и запуска сервера. Если сервер уже остановлен, команда restart запустит его.reload — эта команда позволяет перезагрузить и применить все новые настройки. Ее отличие от restart заключается в том, что применение новых настроек производится без остановки сервера.
Для запуска, перезагрузки и применения новых настроек используется утилита service:

$ sudo service vsftpd start

Такой синтаксис применяется для выполнения всех команд.

5.2. Нормальный режим

Другой подход к запуску vsftpd — это нормальный режим, в котором за работу службы отвечает суперсервер xinetd. Для запуска сервера vsftpd в нормальном режиме необходимо сначала установить суперсервер xinetd:

$ sudo apt-get install xinetd

Приведенная выше команда устанавливает и запускает суперсервер xinetd. В случае, если он у вас уже установлен, эта команда не нужна.
Далее, создайте файл vsftpd в директории /etc/xinetd.d/ со следующим содержимым:

service ftp
{
        disable                 = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/vsftpd
        per_source              = 5
        instances               = 200
        no_access               = 10.1.1.10
        banner_fail             = /etc/vsftpd.busy
        log_on_success          += PID HOST DURATION
        log_on_failure          += HOST
}

В то же время вы можете изменять любые опции, чтобы настроить суперсервер в соответствии со своими требованиями.
Опции, на которые стоит обратить внимание:server — введите в командной строке «$ which vsftpd», чтобы узнать правильный путь.no_access — все хосты с IP-адресами, указанными в этой директиве, будут блокированы.banner_fail — здесь можно указать путь к текстовому файлу, содержимое которого будет показано для любых блокированных IP-адресов. Далее нам необходимо отредактировать конфигурационный файл FTP-сервера /etc/vsftpd.conf, заменив строку

Далее нам необходимо отредактировать конфигурационный файл FTP-сервера /etc/vsftpd.conf, заменив строку

listen=YES

на

listen=NO

Эта директива даст команду FTP-серверу не открывать никаких портов, полностью перепоручив их суперсерверу xinetd. Перед тем, как запустить сервер в нормальном режиме, убедитесь, что демон vsftpd отключен:

$ sudo service vsftpd stop

Теперь можно запустить FTP-сервер в нормальном режиме с помощью команды:

$ sudo service xinetd restart

Чтобы убедиться в нормальной работе FTP-сервера, протестируйте и откройте порт 21 с помощью команды netstat:

$ netstat -ant | grep 21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: