- Как скачивать файлы по SSH
- Графический интерфейс SFTP
- SFTP в FileZilla
- SFTP в Double Commander
- SFTP в менеджере файлов: управление файлами на удалённом хосте через стандартный файловый менеджер
- Как в curl работать с протоколами SCP и SFTP
- cURL и SCP
- cURL и SFTP
- Заключение
- How to Download a File from a Server with SSH / SCP
- Downloading a File from Remote Server with SSH Secure Copy
- How to download a file from my server using SSH (using PuTTY on Windows)
- 6 Answers 6
Как скачивать файлы по SSH
Графический интерфейс SFTP
Если на сервере или просто удалённом компьютере запущен SSH, то для передачи файлов на этот компьютер или скачивания файлов с него не нужно устанавливать FTP или любое другое дополнительное программное обеспечение.
SSH из коробки поддерживает протоколы SCP и SFTP. Причём в пакете ssh поставляются одноимённые утилиты scp и sftp для обмена файлами. Подробности о них вы найдёте в статье «SSH (ч.5): Копирование файлов с помощью scp и sftp». Но это утилиты с интерфейсом командной строки, что не всем может быть удобно.
Протокол SFTP поддерживается несколькими кроссплатформенными программами с графическим интерфейсом. То есть, вы можете закачивать и управлять файлами на сервере через программу с графическим интерфейсом. Причём на сервере кроме запущенного SSH больше ничего не требуется.
SFTP в FileZilla
FileZilla — это не только FTP клиент, эта программа также поддерживает FTP через TLS (FTPS) и, главное для нас сейчас, эта программа поддерживает тот самый протокол SFTP. Программа является бесплатной, у неё открыт исходный код, она работает под Linux и Windows.
Использование программы элементарное — нужно указать хост (IP), имя пользователя и порт. Предположим, я хочу подключиться к хосту 192.168.1.68, под пользователем root. В качестве порта нужно указать порт, на котором работает SSH на этом удалённом сервере, по умолчанию это 22.
Можно просто ввести данные в поля, но мне нравится составлять такие URI адреса, которые начинаются на sftp:// — дело в том, что они нам ещё пригодяться!
Итак, я составил адрес
вставляю его в поле «Хост» и нажимаю кнопку «Быстрое подключение»:
Если вы когда-либо работали с SSH, то вы знаете, что перед каждым первым подключением к новому хосту, нужно согласиться добавить его в список известных хостов:
В этом нет ничего страшного — это сделано для дополнительной защиты (если кто-то подменит хост, то мы об этом узнаем сразу при попытке подключения).
Нажимаем «ОК» и получаем список файлов директории, к которой мы подключились:
Теперь мы можем бродить по каталогам, скачивать файлы с удалённого компьютера и закачивать туда файлы с локальной машины.
SFTP в Double Commander
Double Commander, как и его прототип Total Commander, умеют работать с SFTP с помощью плагина. Но в Double Commander плагин нужно установить, прежде чем эта программа начнёт понимать SFTP.
Я покажу на примере Double Commander в Linux. Если у вас Windows и показанный способ не сработает, то напишите в комментариях, попробуем вместе найти решение (вероятные пути — пробовать плагины Total Commander для SFTP, поскольку Double Commander совместим с ними).
Итак, нам нужен плагин gvfs, скачиваем его.
Распаковываем скаченный архив.
Теперь открываем Double Commander, в меню переходим в «Настройки» → «Параметры» → Вкладка «Плагины» → Плагины WFX.
Нажимаем кнопку «Добавить» и указываем скаченный файл:
Сохраняем, закрываем меню настроек, на всякий случай перезапускаем Double Commander.
Теперь нажимаем на эту кнопку и затем выбираем Network:
Можно нажать и ввести уже знакомый нам URI (если честно, мне просто лень расписывать данные по полям):
Можно указать целевой путь, то есть папку, которая будет открыта на сервере после подключения. Кстати, ведь его можно было указать прямо в URI (об этом чуть ниже):
Имя пользователя мы уже указали в URI, поэтому можно пропустить:
У меня для SSH настроен вход без пароля (аутентификация по ключу), поэтому ничего не ввожу:
Попадаю на удалённый хост, здесь я могу переходить по папкам, делать различные операции с файлами на удалённом компьютере в двухфайловом менеджере:
Прямо в URI можно указывать папку, которая должна быть открыта после подключения. Предположим, я хочу, чтобы открывалась папка /var/www/html, тогда URI будет иметь следующий вид:
В Double Commander и FileZilla можно настроить подключения, чтобы соединение с сервером происходило сразу при выборе желаемого подключения.
SFTP в менеджере файлов: управление файлами на удалённом хосте через стандартный файловый менеджер
SFTP протокол поддерживается многими графическими файловыми менеджерами, которые можно найти в дистрибутивах Linux. Используя как Nemo (Cinnamon), Nautilus (GNOME), так и Konqueror (KDE), мы можем вводить URI (ссылки) начинающиеся на sftp:// в строку перехода и работать с файлами, расположенными на удалённой системе с запущенным SSH сервером.
К примеру, пользователем на удалённой системе является root, IP адрес удалённого хоста 192.168.1.68 и на нём запущен SSH сервер на 22 порту и я хочу открыть папку /root/bin/. Тогда я открываю стандартный менеджер файлов Linux и ввожу туда адрес:
Теперь я могу работать с файлами как если бы они были в локальной системе: перетаскивать, смотреть их свойства, загружать на локальный компьютер.
Кстати, желаемое соединение до удалённой системы можно добавить в закладки стандартного менеджера файлов и открывать его одним кликом. И уже несколько лет как стандартный менеджер файлов Linux поддерживает дополнительную вкладку — в настройках вы можете включить вторую панель для файлового менеджера Linux.
Как в curl работать с протоколами SCP и SFTP
В отличие от всех рассмотренных ранее, cURL — это программа с интерфейсом командной строки. Но всё равно рассмотрим и вариант с cURL — возможно, кому-то пригодиться.
На мой взгляд, работать с протоколами SCP и SFTP в командной строке удобнее через родные утилиты, поэтому я бы в первую очередь порекомендовал изучить «SSH (ч.5): Копирование файлов с помощью scp и sftp» — там подробно описано как пользоваться этими программами.
cURL и SCP
Протокол SCP предназначен в первую очередь для скачивания и закачки файлов. Для скачивания используется команда вида:
Файл oneshot.py из папки /root/bin/ будет скачен в текущую рабочую директорию с исходным именем. Чтобы сохранить файл в другое место и/или с другим именем, добавьте опцию -o, —output — в качестве укажите путь в локальной системе.
Мы используем опцию -k которая предназначена для разрешения небезопасных соединений, то есть когда невозможно валидировать (проверить) ключи. Ключи для SSH генерируются пользователями, поэтому проверить их с помощью третьей стороны невозможно. При этом данные соединения не стоит считать небезопасными — они такие же, как и при подключении по SSH, то есть надёжные.
Если приватный ключ для подключения находится по другому пути, то используйте опцию —key
/.ssh/id_rsa. В современных версиях cURL указывать публичный ключ не нужно — программа сама извлечёт его из приватного ключа. Если вход по ключу не настроен, то используйте опцию —user «testuser:testpassword» или -u user.
Для закачки файла на удалённый сервер используйте опцию -T, —upload-file , где вместо укажите файл, который нужно выгрузить. Пример команды:
cURL и SFTP
При работе с протоколом SFTP, также применяются опции:
- -k (разрешить подключения при неудачной валидации ключа)
- —key
/.ssh/id_rsa — указать другое расположение приватного ключа
Для листинга списка файлов файлов в директории /root/bin/ пользователя root на хосте 192.168.1.68, порт 22:
- Выгрузка используя curl на SFTP
- Загрузка используя curl на SFTP
- Переименование используя curl на SFTP
- Удаление используя curl на SFTP
- Создание директории используя curl на SFTP
- Удаление директории используя curl на SFTP
Как можно догадаться, -Q — это опция для отправки команд на SFTP сервер. Дефис перед командой (префикс) также имеет значение (имеются разные префиксы). Нужно знать, что cURL поддерживает не все команды SFTP — подробности в документации по cURL:
Опция —ftp-create-dirs означает создать необходимую директорию, если она отсутствует (в противном случае работа cURL завершится ошибкой).
Заключение
Итак, если на сервере (удалённом компьютере) запущен SSH, то не нужно устанавливать какие-либо дополнительные программы чтобы загрузить на него файлы или скачать с него файлы. Можно воспользоваться различными вариантами с удобным графическим интерфейсом, либо утилитами командной строки, которые можно задействовать в скриптах.
How to Download a File from a Server with SSH / SCP
Users can securely download a file from any remote server with SSH by using the scp tool at the command line. Essentially this means you can have a file stored securely on a remote server and transfer it to local storage without having to expose that file to the outside world, because scp offers the same level of security and requires the same authentication that ssh does.
Securely downloading files with scp is aimed primarily at advanced users who are using ssh and the command line regularly in either macOS X, bsd, or linux. For those with adequate command line experience, using ssh and scp to download remote files is easy and, conveniently, after the file transfer has completed, the remote connection will end. This makes scp preferential to sftp for quick file downloads, though you could obviously use sftp if you wanted to as well.
Downloading a File from Remote Server with SSH Secure Copy
This assumes the remote server has ssh active, and if you’re able to ssh into the machine then it will have likely have scp active as well. If you don’t have a remote server to try this with, you can try it out between Mac OS X machines or with localhost if you enable ssh and Remote Login on the Mac beforehand.
The basic syntax to use scp (secure copy) for securely downloading remote files is as follows, replacing user, server, path, and target as appropriate:
scp user@server:/path/to/remotefile.zip /Local/Target/Destination
For example, to download a file to the local desktop named “filename.zip” located in the home directory of remote user “osxdaily” on server IP 192.168.0.45, the syntax would be as follows:
/Desktop/
Password:
filename.zip 100% 126 10.1KB/s 00:00
%
Assuming authentication is correct, the target file will immediately start to download to the target destination, offering a percentage completion, download speed, and elapsed transfer time as the file download proceeds.
As usual with the command line, it’s important to specify exact syntax.
If the file or path has a space in the name, you can use quotations or escaping on the path like so:
scp osxdaily@192.168.0.45:»/some remote directory/filename.zip»
scp can also be used to securely place a file on a remote server by adjusting the syntax as well, but we’re focusing on downloading a file rather than uploading files here.
If you’re new to ssh and testing this out yourself, and if you have never connected to the remote server before, you will be asked to confirm whether or not you wish to actually connect to the remote machine. This looks like so, and requires a ‘yes’ or ‘no’ answer before the download begins.
% scp osxdaily@192.168.0.4:filename.zip
/Desktop/
The authenticity of host ‘192.168.0.4 (192.168.0.4)’ can’t be established.
ECDSA key fingerprint is SHA256:31WalRuSLR83HALK83AKJSAkj972JJA878NJHAH3780.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.0.4’ (ECDSA) to the list of known hosts.
Password:
filename.zip 100% 126 0.1KB/s 00:00
%
Again, assuming the connection is approve and the login is successful, the remote file will download from the target server to the localhost.
You can also use scp to download multiple files from a remote server:
Using ssh for remote file downloads like this is most appropriate for secure transfers which require authentication. Sure you can also downloading files with curl or wget from remote servers, but files accessible with curl and wget tend to be accessible from the outside world as well, whereas ssh and scp requires authentication or a key, and uses 3DES encryption, making it considerably more secure.
How to download a file from my server using SSH (using PuTTY on Windows)
When I try downloading a file from my server onto my computer, it actually downloads the file onto the server.
(Note I am already SSH’d into my server before typing this command. I’ve watched tutorials on YouTube and people are using their terminal without SSHing into any particular server, however I don’t think I can do this with PuTTY on Windows?)
The problem is that I am specifying the location to download the file as only
This creates a folder called Desktop in my server, instead of copying the files onto my local desktop.
I’d greatly appreciate any assistance.
I am able to use this command on Linux.
I have successfully download the folder onto my desktop:
I still need insight onto how I can do this on a Windows machine.
6 Answers 6
There’s no way to initiate a file transfer back to/from local Windows from a SSH session opened in PuTTY window.
Though PuTTY supports connection-sharing.
While you still need to run a compatible file transfer client ( pscp or psftp ), no new login is required, it automatically (if enabled) makes use of an existing PuTTY session.
Even without connection-sharing, you can still use the psftp or pscp from Windows command line.
Note that the scp is OpenSSH program. It’s primarily *nix program, but you can run it via Windows Subsystem for Linux or get a Windows build from Win32-OpenSSH (it is already built-in in the latest versions of Windows 10).
If you really want to download the files to a local desktop, you have to specify a target path as %USERPROFILE%\Desktop (what typically resolves to a path like C:\Users\username\Desktop ).
Alternative way is to use WinSCP, a GUI SFTP/SCP client. While you browse the remote site, you can anytime open SSH terminal to the same site using Open in PuTTY command.
See Opening Session in PuTTY.
With an additional setup, you can even make PuTTY automatically navigate to the same directory you are browsing with WinSCP.
See Opening PuTTY in the same directory.