- SSHFS на Windows 10 для монтирования папки из Linux Debian 10
- Разработка и деплой на rsync
- Я знаю про Docker 🙂
- Проблема на самом деле в PhpStorm
- Разработка на разных компах, в разных сетях
- Монтирование папки из Debian все бы решило
- Вариант с Samba
- Монтирование папки из Linux (Debian) в Windows по SFTP
- Нестандартные порты SSH при монтировании
- 10 single line SFTP commands to transfer files in Unix/Linux
- Lab Environment
- 1. Copy file from remote server to local machine windows
- 2. Single line SFTP get command to download file from remote to local server
- 3. Single line SFTP put command to upload file from local to remote server
- 4. Single line SFTP commands to download directory from remote to local server
- Where does SFTP download to?
- SFTP Usage Example:
- 5. SFTP commands to upload directory from local to remote server
- 6. SFTP commands to transfer file using batch file
- 7. Single line SFTP commands to remove directory on remote server
- 8. Transfer files with SFTP commands using ssh_config
- 9. Use SSH options with SFTP single commands
- 10. Use different Port with SFTP Commands to transfer files
- Related Posts
- Как использовать команду SFTP для передачи файлов
- Подготовка
- Установление SFTP-соединения
- Команды SFTP
- Навигация по SFTP
- Передача файлов по SFTP
- Загрузка файлов с помощью команды SFTP
- Загрузка файлов с помощью команды SFTP
- Манипуляции с файлами с помощью SFTP
- Выводы
SSHFS на Windows 10 для монтирования папки из Linux Debian 10
Сегодня расскажу как смонтировать папку (например, с сайтами) из Debian в Windows 10 по SSH (SFTP) с удобным включением/выключением. Под нужным пользователем (www-data) с нужными правами.
Ниже длинное вступление о том как и зачем мне это нужно . Его можно промотать.
Те кто читал мои посты в блоге и видел видосики на канале знают что в основном я занимаюсь разработкой своих сайтов на WordPress, Yii, Laravel. Основной инструмент — PhpStorm. Боевые проекты хостятся на разных вдсках в основном это FastVPS и RuWEB. Везде Debian + Nginx и везде более менее стандартный конфиг (с поправкой на версии и нагрузку кажого из проектов). Всего порядка десяка вдсок.
Разработка и бэкапы на локальной машине под Windows 10 , где крутится усредненный аналог боевой конфиги в VirtualBox . Т.е. дев сервер сейчас это Debian 10 + Nginx 1.15.
Разработка и деплой на rsync
Со всех вдсок sh скрипт с помощью
Я знаю про Docker 🙂
Эта схема не тренд, а мой личный велосипед. Логичнее было все это хозяйство контейнезировать и деплоить через гит. Однако некоторые проекты контейнезировать без потерь крайне сложно, а городить разные инфраструктуры при работе в одни руки не эффективно. Мой велосипед вполне успешно работает уже много лет, но есть одна проблема, над которой я бьюсь столько же лет сколько велосипед существует.
Проблема на самом деле в PhpStorm
В PhpStorm когда вы создаете проект из ранее созданных файлов ( Create New Project from Existing Files ) у вас есть по сути два выбора — файлы проекта расположены локально или удаленно. Если создать проект из удаленных файлов, то PhpStorm будет скачивать их все на локальный диск для индексации. А при изменении закачивать их обратно на удаленный сервер (например по SFTP). Это не проблема, когда разработка идет на одном компьютере.
Разработка на разных компах, в разных сетях
Однако я работаю сразу на 3х — стационарный десктоп под Windows 10, два ноутбука. Один ноут используется дома (нравится мне менять места и позы во время работы), второй используется реже — вне дома. И в этом случае возникает сложность синхронизации локальных проектов одного и того же удаленного проекта. Особенно если это проекты с множеством мелких файлов. Например Laravel c Laravel Mix. Короче жуткая головная боль.
Монтирование папки из Debian все бы решило
Куда проще если бы можно было подмонтировать удаленную папку сайта и создавать проект в PhpStorm как с локальными файлами. В Ubuntu это делается элементарно, а вот под виндой все на порядок сложнее.
Вариант с Samba
В принципе дома у меня работала схема с Samba сервером на дев виртуалке под юзером www-data. Но если работать с дев сервером с улицы (через проброс портов через роутер) и если домашний ip динамический, то возникает несколько сложностей — нужно каждый раз менять ip, пробрасывать порт в роутере ещё и на самбу (лишняя уязвимость), перемонтировать диски. Короче хотелось так чтобы как в Ubuntu. И выход нашелся.
Монтирование папки из Linux (Debian) в Windows по SFTP
Для монтирования папки из Linux в Window 10 по SFTP я использую связку billziss-gh/winfsp + billziss-gh/sshfs-win . WinFSP — это порт https://github.com/libfuse/sshfs под винду. А sshfs — это как раз та сетевая файловая система что используется в Ubuntu для монтирования по SFTP. Как я и хотел.
Итак ставим сначала WinFSP, затем SSHFS-Win. Сразу после перезагрузки диски папки можно будет легко монтировать прямо из проводника Windows 10. См. картинку.
Монтирование папки через проводник в SSHFS-Win
Однако в моем случае это не решило проблему.
Нестандартные порты SSH при монтировании
При монтировании папки через проводник вы можете указать путь до папки на сервере, но не можете указать порт SSH, если ssh висит не на 22. Это можно сделать в командной строке
Источник
10 single line SFTP commands to transfer files in Unix/Linux
Table of Contents
SFTP stands for secure file transfer program similar to ftp. The only difference is that Unix or Linux SFTP command performs all operations over an encrypted SSH transport. It may also use many features of ssh, such as public key authentication and compression.
I have already written another article with the steps to setup SFTP server with passwordless login using authorized_keys in Unix and Linux. So I will use the same SFTP server to demonstrate single line SFTP commands to transfer files and directory from local to remote and remote to local server.
Some more articles on related topic to transfer files and folders between two servers:
Lab Environment
SFTP Server:
Hostname : sftp-server
IP Address : 192.168.43.83
SFTP Client:
Hostname : sftp-client
IP Address : 192.168.43.82
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 [user@]host[:path] or as a URI in the form
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
Once connected you can now copy file from remote server to local machine windows or vice versa.
Assuming the user deepak has enough privilege you should be able to copy file from remote server to local machine windows or vice versa.
2. Single line SFTP get command to download file from remote to local server
Use below SFTP syntax to download file from remote to local server using SFTP get command.
I have dest_dir folder on sftp-server on which I will create a new file ( sftp-server_file ) and then we will download this file on sftp-client using SFTP get command.
Connect to sftp-server using sftp-client and download sftp-server_file to /tmp on sftp-client using SFTP get command.
Since I had configured passwordless sftp, we did not got any SFTP command line password prompt
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.
I will create a file sftp-client_file under /tmp on sftp-client
Upload /tmp/sftp-client_file to sftp-server using single line SFTP put command
As you see the one line SFTP command line file upload was successful and since we are using SFTP authorized_keys, we did not got any SFTP command line password prompt
4. Single line SFTP commands to download directory from remote to local server
We will use the same SFTP syntax as we used for SFTP get command to download file from remote to local server with an additional SFTP argument
I have created sftp-server_dir on sftp-server
Next we will use single line SFTP get command line to download directory from remote to local server under /tmp
As you see the single line SFTP command line to download directory from remote to local server was successful and since we are SFTP authorized_keys, we did not got any SFTP command line password prompt.
Verify the directory on sftp-client we just downloaded under /tmp using SFTP command:
Where does SFTP download to?
In the above SFTP usage example we had explicitly provided the path to download files and directory. By default the local directory under which you have executed SFTP will be the «local path» where SFTP will by default download the files to if you have not given any source directory.
SFTP Usage Example:
Below SFTP usage example will clear your doubt on «where does sftp download to»
We have used below commands in this SFTP usage example:
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 EOF tag.
6. SFTP commands to transfer file using batch file
You can automate SFTP file transfer in Unix and Linux using batch file. I have explained more about batch file in another article so I will not cover this part again. use the below SFTP Syntax to use batch file and automate file transfers
I have created below SFTP batch file to upload directory ( sftp-client_dir ) from local to remote server.
This batch file will create sftp-client_dir on sftp-server and then upload directory sftp-client_sir from sftp-client to the SFTP server.
Verify if the sftp-client_dir was successfully uploaded to sftp-server . Since we have configured SFTP authorized_keys to perform passwordless sftp, did not got any SFTP command line password prompt
7. Single line SFTP commands to remove directory on remote server
The SFTP syntax to remove directory on sftp-server using one liner SFTP command line is same as we used to upload file from local to remote server
Using the below one liner SFTP rmdir command we will remove sftp-client_dir on sftp-server . Since this directory is under exchange folder of sftp-server hence I have provided this path while connecting to sftp-server .
We have successfully removed sftp-client_dir from our sftp-server which was inside exchange folder. Since we have configured SFTP authorized_keys to perform passwordless sftp, did not got any SFTP command line password prompt
8. Transfer files with SFTP commands using ssh_config
You can create a config file with SSH Client configuration values which will be used by SFTP command to transfer files. Use below SFTP syntax to use ssh_config
I have created below ssh config files with some values which will be used by our sftp-client
We will use this ssh_config file with SFTP command line in combination with -F argument as shown below
You can combine this with batch file which I used in above SFTP usage examples to automate SFTP transfer files between local and remote servers. Since we have configured SFTP authorized_keys to perform passwordless sftp, did not got any SFTP command line password prompt.
9. Use SSH options with SFTP single commands
If you do not wish to create additional SSH config file then you can also pass those arguments using -o argument with SFTP command. Use below SFTP syntax:
I have used some of the SSH client options in the below SFTP usage example to use Public Key Authentication with our SFTP.
Since we have configured SFTP authorized_keys to perform passwordless sftp, we did not got any SFTP command line password prompt
10. Use different Port with SFTP Commands to transfer files
By default SFTP uses the same port as SSH i.e. 22. But you can also configure SSH and SFTP to use a different port by using Port= in /etc/ssh/sshd_config on SFTP server. In this SFTP usage example I have setup SFTP to use port 2200 instead of port 22.
We can connect using a custom SFTP port using -o Port= as shown below
or alternatively we can also use SFTP argument -P to define a custom port for SFTP connection.
Lastly I hope the SFTP usage examples from the article to use one liner SFTP commands in Unix and Linux to transfer files was helpful. So, let me know your suggestions and feedback using the comment section.
Related Searches: linux sftp command line example, sftp get command, sftp usage, sftp syntax, sftp put command, sftp upload files, copy file from remote server to local machine windows, Where does sftp download to, sftp commands
Related Posts
Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud
If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.
For any other feedbacks or questions you can either use the comments section or contact me form.
Thank You for your support!!
Источник
Как использовать команду SFTP для передачи файлов
SFTP (SSH File Transfer Protocol) — это безопасный файловый протокол, который используется для доступа, управления и передачи файлов через зашифрованный транспорт SSH.
По сравнению с традиционным протоколом FTP SFTP предлагает все функции FTP, но он более безопасен и проще в настройке.
В отличие от SCP , который поддерживает только передачу файлов, SFTP позволяет выполнять ряд операций с удаленными файлами и возобновлять передачу файлов.
В этом руководстве мы покажем вам, как использовать команду Linux sftp .
Подготовка
Чтобы иметь возможность передавать файлы через SFTP, вы должны иметь разрешение на запись в удаленной системе.
При передаче больших файлов рекомендуется запускать команду sftp внутри сеанса screen или tmux .
Каталог, из которого вы запускаете команду sftp является локальным рабочим каталогом.
Установление SFTP-соединения
SFTP работает по модели клиент-сервер. Это подсистема SSH и поддерживает все механизмы аутентификации SSH.
Чтобы открыть SFTP-соединение с удаленной системой, используйте команду sftp за которой следует имя пользователя удаленного сервера и IP-адрес или имя домена:
Если вы подключаетесь к хосту с использованием аутентификации по паролю, вам будет предложено ввести пароль пользователя.
После подключения вам будет представлено приглашение sftp , и вы сможете начать взаимодействие с удаленным сервером:
Если удаленный SSH-сервер не прослушивает порт по умолчанию 22 , используйте параметр -P чтобы указать порт SFTP:
Команды SFTP
Большинство команд SFTP похожи или идентичны командам оболочки Linux.
Чтобы получить список всех доступных команд SFTP, введите help или ? .
Это выведет длинный список всех доступных команд, включая краткое описание каждой команды:
Навигация по SFTP
Когда вы вошли на удаленный сервер, ваш текущий рабочий каталог является домашним каталогом удаленного пользователя. Вы можете проверить это, набрав:
Чтобы вывести список файлов и каталогов, используйте команду ls :
Чтобы перейти в другой каталог, используйте команду cd . Например, чтобы перейти в каталог /tmp , введите:
Вышеупомянутые команды используются для навигации и работы в удаленном месте.
Оболочка SFTP также предоставляет команды для локальной навигации, управления информацией и файлами. Локальные команды начинаются с буквы l .
Например, чтобы распечатать локальный рабочий каталог, вы должны ввести:
Передача файлов по SFTP
SFTP позволяет безопасно передавать файлы между двумя машинами.
Если вы работаете на настольном компьютере, вы можете использовать SFTP-клиент с графическим интерфейсом, например WinSCP или FileZilla, для подключения к удаленному серверу и загрузки или выгрузки файлов.
Команда sftp полезна, когда вы работаете на сервере без графического интерфейса пользователя и хотите передавать файлы или выполнять другие операции с удаленными файлами.
Загрузка файлов с помощью команды SFTP
Чтобы загрузить один файл с удаленного сервера, используйте команду get :
Результат должен выглядеть примерно так:
При загрузке файлов с помощью sftp файлы загружаются в каталог, из которого вы ввели команду sftp .
Если вы хотите сохранить загруженный файл под другим именем, укажите новое имя в качестве второго аргумента:
Чтобы загрузить каталог из удаленной системы, используйте рекурсивную опцию -r :
Если передача файла не удалась или прервалась, вы можете возобновить ее с помощью команды reget .
Синтаксис reget такой же, как синтаксис get :
Загрузка файлов с помощью команды SFTP
Чтобы загрузить файл с локального компьютера на удаленный SFTP-сервер, используйте команду put :
Результат должен выглядеть примерно так:
Если файл, который вы хотите загрузить, не находится в вашем текущем рабочем каталоге, используйте абсолютный путь к файлу.
При работе с put вы можете использовать те же параметры, которые доступны с командой get .
Чтобы загрузить локальный каталог, введите:
Чтобы возобновить прерванную загрузку:
Манипуляции с файлами с помощью SFTP
Обычно для выполнения задач на удаленном сервере вы подключаетесь к нему через SSH и выполняете свою работу, используя терминал оболочки. Однако в некоторых ситуациях пользователь может иметь только SFTP-доступ к удаленному серверу.
SFTP позволяет выполнять некоторые основные команды для работы с файлами. Ниже приведены несколько примеров использования оболочки SFTP:
Получите информацию об использовании диска удаленной системой:
Создайте новый каталог на удаленном сервере:
Переименуйте файл на удаленном сервере:
Удалите файл на удаленном сервере:
Удалите каталог на удаленном сервере:
Измените права доступа к файлу в удаленной системе:
Измените владельца файла в удаленной системе:
Вы должны указать ID пользователя командам chown и chgrp .
Измените владельца группы удаленного файла с помощью:
Когда вы закончите свою работу, закройте соединение, набрав « bye или « quit .
Выводы
В этом руководстве мы показали вам, как использовать команду sftp для загрузки и выгрузки файлов на удаленный сервер SFTP.
Вы также можете настроить аутентификацию на основе ключа SSH и подключаться к своим серверам Linux без ввода пароля. Если вы регулярно подключаетесь к одним и тем же системам, вы можете упростить рабочий процесс, указав все свои подключения в файле конфигурации SSH .
Не стесняйтесь оставлять комментарии, если у вас есть вопросы или отзывы.
Источник