Как копировать и передавать файлы по SSH
В статье мы расскажем, как передать файлы через SSH на разных операционных системах — Windows и Linux.
- Что нужно для подключения
- Как скопировать файл через SSH на Linux
- Как отправить файл по SSH с локального компьютера на сервер
- Как скачать файлы с удаленного сервера на компьютер
- Как скопировать файлы по SSH на Windows
- Как загрузить файл с компьютера на сервер
- Как скачать файл через SSH на локальный компьютер
Для подключения к серверу вам потребуются:
- IP-адрес или имя сервера,
- логин пользователя (в том числе root),
- пароль пользователя,
- порт.
Чаще всего копирование файлов через SSH делают с помощью двух мини-программ:
- scp (Secure Copy) — утилита для Linux. Она позволяет безопасно передать или скачать файл по протоколу SSH. Программа scp входит в комплект OpenSSH и не требует установки.
- pscp.exe — это утилита для Windows. Она используется по тому же назначению, что и scp: подключение к серверу по SSH и работа с файлами. Эта мини-программа входит в состав PuTTY: ее можно скачать на официальном сайте. Процедура настройки SSH-клиента описана в нашей статье.
Важно: если загружаемый файл существует на целевом хосте, он перезапишется.
Работа через SSH предполагает использование консольных команд. Наиболее популярные из них вы можете найти в статье.
Как скопировать файл через SSH на Linux
Копирование файлов по SSH на Linux можно сделать с помощью scp. Эта утилита позволяет:
- передать файл с локального компьютера на удаленный сервер,
- скачать файл с удаленного сервера на локальный компьютер.
Команда scp имеет следующий синтаксис:
scp опция источник получатель
Как отправить файл по SSH с локального компьютера на сервер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
scp /home/test.doc username@servername:/directory
Где:
- /home/test.doc — путь к файлу на локальном компьютере;
- username — имя SSH-пользователя;
- servername — имя сервера или его IP-адрес;
- directory — директория на сервере, в которую нужно загрузить файл.
Готово, вы загрузили файл на сервер.
Как скачать файлы с удаленного сервера на компьютер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
scp username@servername:/directory/test.doc /home
Где:
- /directory/test.doc — путь к файлу на сервере;
- username — имя SSH-пользователя;
- servername — имя сервера или его IP-адрес;
- home — папка на компьютере, в которую нужно загрузить файл.
Готово, вы скачали файл на компьютер.
Как скопировать файлы по SSH на Windows
Копирование через SSH на ОС Windows выполняется с помощью утилиты pscp.exe из набора PuTTY.
Как загрузить файл с компьютера на сервер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
pscp C:/documents/test.doc username@servername:/directory
Где:
- /documents/test.doc — путь к файлу на локальном компьютере;
- username — имя SSH-пользователя;
- servername — имя сервера или его IP-адрес;
- directory — директория на сервере, в которую нужно загрузить файл.
Если название файла или путь содержит пробелы, заключите его в кавычки:
pscp “C:/documents/test 1.doc” username@servername:/directory
Готово, вы загрузили файл на сервер.
Как скачать файл через SSH на локальный компьютер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
pscp username@servername:/directory/test.doc C:/documents
Где:
- username — имя SSH-пользователя;
- servername — имя сервера или его IP-адрес;
- directory/test.doc — путь к файлу на сервере;
- /documents — директория на локальном компьютере, в которую нужно загрузить файл.
Если название файла или путь содержит пробелы, заключите его в кавычки:
pscp username@servername:”/directory/test 1.doc” C:/documents
Готово, вы скачали файл на компьютер.
During my daily working, I do the development on Windows OS; besides, we have a
Debian server for running different jobs automatically, file storage, etc.
Sometimes, we also need to transfer files from Windows OS to Linux OS, or
reverse; in this case, we use Putty to realize the transfering. Today, I will
talk about how to use Putty for transfer files with the following points:
- What is Putty ?
- Requirements
- Transfering files from Windows to Linux
- Transfering files from Linux to Windows
What is Putty ?
PuTTY is a free and open-source terminal emulator, serial console and
network file transfer application. It supports several network protocols,
including SCP, SSH, Telnet, rlogin, and raw socket connection. It can also
connect to a serial port. The name “PuTTY” has no official meaning.
Requirements
- Windows OS
- Linux OS
- Putty installed: download Putty here
- Putty PSCP installed: download Putty PSCP here
Transfering files from Windows to Linux
To transfer files from Windows OS to Linux OS, we will apply PSCP
. Before we
start, let’s have a general understanding of it. PSCP
means “PuTTy Secure
Copy Protocol (PSCP)”, is a tool for transferring files securely between
computers using an SSH connection. To use this utility, we should be
comfortable working in the Windows Command Prompt.
Now, let’s start to transfer files to Linux:
- Open Windows Command Prompt.
- Type
pscp source_path user_name@host:target_path
at the prompt
pscp weekly_report.xlsx xxx@123.456.789.0:reporting
Here, ./weekly_report.xlsx
specifies the path of source file, xxx
is user’s
account for accessing the Linux server, 123.456.789.0
is the host address,
/reporting
presents target path.
- After the bash script above, we also need to type the password for accessing
the Linux server.
Transfering files from Linux to Windows
Transfering files from Linux OS to Windows OS is similar to the steps above:
- Open Windows Command Prompt.
- Type
pscp user_name@host:source_path target_path
at the prompt
pscp xxx@123.456.789.0:reporting/weekly_report.xlsx ./
- Same as above, after the bash script above, we also need to type the password
for accessing the Linux server.
Conclusion
In this blog, I introduced how to use Putty
to transfer files from Windows OS
to Linux OS and reverse. Hope it’s useful for you.
Reference
- “PuTTY”, wikipedia. [Online]. Available: https://en.wikipedia.org/wiki/PuTTY
- “Transfer Files Using PuTTY”, it.cornell.edu. [Online]. Available: https://it.cornell.edu/managed-servers/transfer-files-using-putty
- Comfreak, “traffic information superhighway”, pixabay.com. [Online]. Available: https://pixabay.com/photos/traffic-information-superhighway-3524185/
В операционных системах семейства Linux для удаленного доступа между машинами широко используется протокол SSH. Его популярность обусловлена простотой, надежностью и безопасностью соединения. Подключившись по SSH к удаленному компьютеру, вы получаете возможность выполнять на нем любые команды терминала, как будто вы работате на своем компьютере, работает даже автодополение и другие вспомогательные возможности.
Иногда возникает необходимость подключиться к удаленному компьютеру Linux из Windows, но по умолчанию, там нет утилиты предназначенной для этого. Есть сторонняя программа, она называется PuTTY и вы можете установить ее отдельно. В этой статье мы рассмотрим как пользоваться PuTTY для подключения к Linux системам, а также поговорим как выполняется настройка PuTTY для удобного использования.
Сначала нужно скачать установщик программы. Для этого откройте официальный сайт и нажмите «You can download PuTTY here»:
Затем выберите установщик для вашей архитектуры, x86 или x64 и загрузите его.
На первом шаге нажмите «Next»:
Папку для установки можно оставить по умолчанию:
Компоненты тоже:
Дождитесь завершения установки:
Снимите галочку с «View README» и нажмите «Finish»:
Теперь перейдем к тому как выполняется работа в PuTTY.
Как пользоваться PuTTY
1. Интерфейс программы
Сразу же после запуска программы из меню пуск вы увидите графический интерфейс ее настройки. После подключения вы будете видеть только терминал, но настроить программу можно через удобный интерфейс.
Рассмотрим за что отвечают те или иные вкладки программы, чтобы вы ориентировались что и где искать. У нас есть четыре вкладки:
- Session — отвечает за подключение удаленному серверу, тут мы вводим параметры подключения, порт, адрес, а также можем сохранить все настройки putty, чтобы не настраивать каждый раз заново.
- Terminal — позволяет включать или отключать возможности терминала;
- Window — настройка внешнего вида окна, цвет, шрифт, кодировка;
- Connection — настройка параметров подключения, алгоритма шифрования, сжатия, ключей аутентификации, X11 и других параметров.
Каждая вкладка имеет несколько подразделов, но мы не будем сейчас их трогать, а перейдем сразу к практике и посмотрим как подключиться putty к удаленному узлу.
2. Подключение к удаленному компьютеру PuTTY
Чтобы подключиться к удаленному компьютеру по SSH перейдите на вкладку «Session», здесь, в поле «Host Name» необходимо прописать ip адрес или имя хоста, компьютера, к которому вы хотите подключиться, в поле порт — нужно указать порт, на котором запущен SSH сервер, по умолчанию используется порт 22:
Далее, нажмите кнопку «Open». После этого появится запрос на добавление ключа сервера в список доверенных ключей, нажмите «Да»:
Затем вам будет нужно ввести логин пользователя и пароль. Важно заметить, что скопировать логин или пароль у вас не получится, необходимо только вводить вручную:
Теперь авторизация прошла успешно, и вы можете выполнять нужные действия на сервере:
3. Сохранение сессии PuTTY
Чтобы не вводить каждый раз ip и порт можно сохранить эти данные в виде сессии, для этого пропишите новое имя в поле «Saved Sessions», а затем нажмите кнопку «Save»:
Теперь вы сможете загрузить сохраненную сессию, нажав кнопку «Load».
После того как будет завершена настройка putty и все параметры будут выставлены правильно вы можете сохранить настройки и не вводить их несколько раз.
4. Имя пользователя по умолчанию
Вы можете не вводить имя пользователя каждый раз, для этого перейдите на влкадку «Connection», затем «Data» и в поле «Auto-login Username» пропишите имя пользователя, например, root:
Теперь подключение putty будет выполняться от имени этого пользователя.
5. Авторизация по ключу ssh в PuTTY
Чтобы не вводить каждый раз пароль можно настроить авторизацию по ключу. В Linux такая возможность используется очень широко потому что это удобно. Первым делом необходимо создать ключ. Для этого запустите утилиту PuTTYgen и установите переключатель в положение «SSH-2 RSA» нажмите «Generate»:
Обязательно ключ должен быть SSH-2 RSA, если в главном окне нет, выберите в меню «Key». Подвигайте мышкой, чтобы создать достаточное количество энтропии:
Ключ готов, затем, с помощью кнопок «Save Public Key» и «Save Private Key» сохраните оба ключа.
Далее, откройте PuTTY, перейдите на вкладку «Connection», затем «SSH», затем «Auth»:
Здесь необходимо нажать кнопку «Browse» и добавить недавно сохраненный приватный ключ:
Далее, возвращаемся на вкладку «Session», выбираем наше сохранение и нажимаем «Save» чтобы сохранить настройки. Осталось только отправить наш открытый ключ на сервер. Для этого авторизуйтесь на нем с помощью пароля и открытый ключ вставьте ключ в конец файла /root/.ssh/authorized_keys.
Ключ можно брать прямо из окна PuTTYgen «Public key for pasting» или из файла открытого ключа:
Все, теперь можно выходить и авторизоваться снова. На этот раз подключение по ssh putty будет выполняться с помощью нашего ключа. Не забывайте сохранять настройки сессии, чтобы не выбирать ключ каждый раз. Теперь вы знаете как пользоваться программой putty, рассмотрим еще передачу файлов.
5. Передача файлов через scp в PuTTY
Не все знают, но PuTTY позволяет передавать файлы через ssh также как это делает linux с помощью утилиты scp. Нажмите Win+R, затем пропишите cmd, чтобы запустить командную строку.
Синтаксис утилиты pcsp выглядит следующим образом:
pscp опции путь_файлу имя_пользователя@хост:/путь/к/файлу/на/удаленном/хосте
Например, мы можем отправить файл из текущей папки в папку пользователя /root/:
pscp test.txt root@185.22.173.108:/root/
С помощью опции -P можно задать удаленный порт:
pscp -P 2250 test.txt root@185.22.173.108:/root/
А опция load позволяет загрузить сохраенные настройки сессии PuTTY:
pscp -load losst-2 test.txt root@185.22.173.108:/root/
Теперь вы знаете как использовать putty для передачи файлов.
Выводы
В этой статье мы рассмотрели как пользоваться PuTTY для решения задач администрирования Linux в Windows. Иногда случаются ситуации, что без ssh в windows никуда, тогда эта утилита будет просто незаменимой.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Для удаленной работы с серверами Linux, FreeBSD, *BSD удобно пользоватся программой Putty.
Putty — это бесплатная программа — клиент для подключения к серверу в основном по SSH протоколу, но также можно использовать и telnet протокол, который не желательно использовать из-за его небезопасности, так как все по telnet протоколу передается в незашифрованном виде.
Через протокол SSH вы узнаете как пробросить порт на роутер, модем либо другое оборудование за сервером с установленным сервером SSH, узнаете как можно скачать либо закачать файл на сервер либо с сервера. Вообщем Putty очень полезная и удобная маленькая программа с большими возможностями.
Программу Putty также можно использовать и для подключения к устройствам используя последовательный порт, например настроить 3G модем Huawei через Putty.
Скачиваем программу Putty и PSCP на странице: скачать Putty и PSCP с официального сайта]]>
При открытии выше приведенной ссылки в браузере, Вам откроется окно:
На скриншоте выше обведено две ссылки которые нужно скачать на диск С:\ в папку putty, которую необходимо предварительно создать. Туда скачиваем две программы putty.exe и pscp.exe. На приведенном ниже скриншоте Вы можете видеть скачанные на моем компьютере программы в папке putty на диске C:\
Запускаем файл программы putty.exe нажав дважды на файле мышкой, откроется окно, в котором я добавляю сервер Linux который находится в моей сети и имеет айпи адрес 192.168.2.1 со стандартным портом SSH — 22, итого:
- Host Name: 192.168.2.1
- Port: 22
- Saved Session: 192.168.2.1 (тут можно написать любое имя, например сервер Васи Пупкина)
Далее обязательно переходим во вкладку Window — Translation и в выпадающем списке выбираем кодировку UTF-8(либо выбираем ту кодировку с которой настроен Ваш удаленный сервер, в большинстве случаев это UTF-8), если этого не сделать, тогда у Вас после подключения к серверу используя Putty все руские слова будут отображатся нечитаемыми символами:
После изменения кодировки переходим в главное окно Session и проверив, что у Вас заполнено поле Saved Session нажимаем кнопку Save. Теперь у Вас в главном окне появилась новая запись 192.168.2.1 (либо сервер Васи Пупкина). После закрытия программы Putty у Вас добавленная запись останется и для подключения к удаленному серверу по SSH Вам достаточно нажать дважды на сохраненную запись 192.168.2.1:
При первом подключении к серверу по SSH протоколу, Вам будет предложено согласится на запись ключа удаленного сервер в кеш программы Putty, Вы соглашаетесь на это нажав кнопку Да и Вам откроется окно ввода логина и пароля:
В открывшемся окне вводим имя пользователя например root и нажимаем Enter, Вам будет предложено ввести пароль пользователя root, сам вводимый пароль не будет виден, просто когда введете пароль нажмите Enter и если Вы правильно ввели логин:пароль Вы окажетесь на удаленно Linux сервере:
Ниже приведен скриншот в котором я вошел на сервер Linux по SSH bcgjmpez программу удаленного доступа Putty:
В выше приведенной инструкции Вы узнали как и откуда скачать программу Putty, запустили скачанную программу Putty, добавили удаленный сервер в и сохранили его настройки включая кодировку сервера в параметры программы Putty, а также подключились к удаленному Linux серверу.
Далее предположим, что у нас есть сервер либо роутер с установленным Linux и открытым портом SSH. Нам небходимо подключится к модему через который данный сервер выходит в интернет. Сам модем с интернета не доступен. В данной ситуации нам очень пригодится программа удаленного доступа Putty, с помощью которой мы пробросим порт с нашего компьютера через удаленный сервер на роутер либо модем.
Дано:
- IP Удаленного сервера — 192.168.2.1
- IP роутера либо модема — 192.168.1.1
- Пробрасываемый порт — 82
Нам необходимо в браузере открыть настройки роутера либо модема, внести изменения и сохранить. Пробрасывать будем 82 порт, так как он при стандартных настройках как сервера так и декстопа не задействован.
Так как мы будем пробрасывать 82 порт на роутер на том же сервере к которому мы ранее уже подключались, на необходимо во вкладке Session выделить мышкой добавленный ранее сервер с именем 192.168.2.1 и нажать кнопку Load, после этого заполнятся поля Host Name, Port, Saved Session:
Нам необходимо перейти во вкладку Connection — SSH — Tunnels и заполнить поля:
Source port: 82
Destination: 192.168.1.1:80
где порт 82 — это порт который откроется на Вашем компьютере (декстопе), а 192.168.1.1:80 это айпи роутера и порт на который нам необходимо пробросить порт. Все что открывается по ссылке http — это 80 порт, https — это 443 порт. Аналогично можно пробросить и 21 порт это FTP, почту, SSH, Radmin, RDP и так далее. После заполнения полей нажимаем кнопку Add для добавления тунеля в текущие настройки:
В окне ниже мы добавили туннель на роутер с 82 порта на айпи роутера 192.168.1.1 и WEB порт 80:
После добавления тунеля нам необходимо сохранить данные настройки под другим именем, для этого переходим во вкладку Session и в поле Saved Session написать имя соединения с настроенным тунелем: 192.168.2.1_82-to-192.168.1.1 и нажимаем кнопку Save, в окне ниже появится новое имя 192.168.2.1_82-to-192.168.1.1 дважды нажав на которое мышкой, мы получим приглашение ввести логин:пароль, введя которые мы зайдем на удаленный сервер.
После того как мы зашли на удаленный сервер с профиля 192.168.2.1_82-to-192.168.1.1, в котором у нас настроен проброс порта 82 на 80 порт роутера по айпи 192.168.1.1, нам для подключения к роутеру либо модему необходимо в браузере прописать адрес http://localhost:82 и у Вас откроется окно ввода логина и пароля от роутера:
После входа на роутер Вам останется только внести необходимые изменения в настройки роутера или модема. Для того, чтобы прекратить работу проброса порта, Вам нужно просто закрыть программу удаленного доступа Putty.
Как настроить проброс порта через Putty Вы узнали, потому переходим к третьему разделу копирования файлов по SSH.
Копирование файлов через SSH используя программу для удаленного доступа Putty.
Для копирования файла на удаленный сервер, я в папке pytty на диске C:\ заархивировал программу putty.exe, и в заархивированном виде файл имеет имя putty.zip скриншот:
Для копирования файла putty.zip нам необбходимо открыть командную строку Windows, для этого нажимаем кнопку Пуск — Выполнить и в появившемся окне вводим команду cmd и нажать Ok:
После запуска командной строки выполнив команду cmd нам откроется окно:
После открытия командной строки, нам необходимо перейти в папку, где находится программа pscp.exe и копируемый файл putty.zip, для этого нам необходимо выполнить в командной строке команду:
cd c:\putty
После входа в папку putty на диске C:\ мы можем проверить содержимое папки выполнив команду:
dir
На скриншоте ниже это все видно:
И теперь нам для того, чтобы закачать файл putty.exe на удаленный сервер под пользователем root в папку /root нам необходимо выполнить команду:
Если у Вас SSH сервер висит на стандартном 22 порту, выполняете команду:
pscp.exe putty.zip [email protected]:/root/
Если же у Вас SSH сервер висит на нестандартном порту, например 222, тогда выполняете команду:
pscp.exe -P 222 putty.zip [email protected]:/root/
В команде выше мы сказали программе pscp.exe закачать файл putty.zip находящийся в текущей директории на удаленный сервер под пользователем root с IP адресом 192.168.2.1 в папку /root. После выполненной команды, Вам будет предложено ввести пароль пользователя root
Для того, чтобы скопировать файл putty.zip с удаленного сервера в текущую папку, SSH сервер на стандартном 22 порту, нам необходимо выполнить команду:
pscp.exe [email protected]:/root/putty.zip .
Для того, чтобы скопировать файл putty.zip с удаленного сервера в текущую папку, SSH сервер на нестандартном 222 порту, нам необходимо выполнить команду:
pscp.exe -P 222 [email protected]:/root/putty.zip .
В команде выше мы сказали программе pscp.exe cкачать файл putty.zip находящийся в директории /root на удаленном сервере под пользователем root с IP адресом 192.168.2.1 в текущую папку (в папку в которой мы находимся)
Вот и закончена инструкция по работе с программой Putty. Прочитав данную инструкцию Вы узнали (если не знали) как установить скачать, запустить, настроить и использовать программу для удаленного доступа Putty. Вы узнали как пробросили порт через Putty на роутер, модем либо другой сервер находящийся за текущим. Вы узнали как можно скачать с сервера файл на свой компьютер, либо наоборот закачать нужный файл со своего компьютера на удаленный сервер используя SSH протокол.
С Вами был Лазаренко Сергей, буду очень рад если данная инструкция будет Вам полезна.
Маленький перерыв, отдохнем 3 минутки просмотрев красивый ролик:
-
Главная
-
Инструкции
-
Linux
-
Копирование файлов по SSH
Протокол SSH (Secure Shell) — это сетевой протокол для удаленного управления операционной системой через командную строку, который можно назвать стандартом для удаленного доступа к *nix-машинам. Позволяет производить защищенный вход на сервер, удаленно выполнять команды, управлять файлами (создавать, удалять, копировать и т.д.) и многое другое. Большинство облачных и хостинг-провайдеров требуют наличие SSH для доступа к своим сервисам. В этой статье рассмотрим копирование файлов по SSH в Windows и Linux-системах.
SSH способен передавать любые данные (звук, видео, данные прикладных протоколов) через безопасный канал связи. В отличие от устаревших и небезопасных протоколов telnet и rlogin, в SSH обеспечивается конфиденциальность передаваемых данных и подлинность взаимодействующих сторон — необходимые условия для сетевого взаимодействия в Интернете.
Рассмотрим алгоритм установки зашифрованного соединения между клиентом и сервером:
- Установка TCP-соединения. По умолчанию сервер слушает 22-й порт. В работе протокола используется набор алгоритмов (сжатие, шифрование, обмен ключами), поэтому стороны обмениваются списком поддерживаемых алгоритмов и договариваются, какие из них будут использовать.
- Чтобы третья сторона не смогла выдать себя за сервер или клиент, стороны должны удостоверится в подлинности друг друга (аутентификация). Для этого используются асимметричные алгоритмы шифрования и пара открытый-закрытый ключ. Вначале проверяется аутентичность сервера. Если соединение происходит впервые, пользователь увидит предупреждение и информацию о сервере. Список доверенных серверов и их ключей записывается в файл по адресу /home/<username>/.ssh/known_hosts.
- Как только клиент убедился в достоверности сервера, стороны генерируют симметричный ключ, с помощью которого происходит шифрования всех обмениваемых данных. Таким образом при перехвате данных, никто, кроме сторон не сможет узнать содержимое сообщений.
- Далее происходит аутентификация пользовательского сеанса. Для этого используется либо пароль, либо присланный клиентом публичный ключ, сохраняемый в файле /home/<username>/.ssh/authorized_keys на сервере.
Самая популярная реализация на Линукс, OpenSSH, предустанавливается практически на всех дистрибутивах: Ubuntu, Debian, RHEL-based и других. На Windows в качестве клиентов можно использовать программы PuTTY, MobaXterm. Начиная с WIndows 10 и Windows Server 2019 инструменты OpenSSH доступны и на Windows.
Подробнее об SSH и работе с ним мы писали в статье «Как пользоваться SSH».
Копирование файлов
Копирование файлов в Linux по SSH осуществляется с помощью двух основных программ: scp и sftp. Обе утилиты поставляются вместе с пакетом OpenSSH. Существуют две основные версии протокола SSH: 1 и 2. Оболочка OpenSSH поддерживает обе версии, однако первая применяется редко.
Настройка автодополнений
При работе с scp крайне удобно использовать tab для автодополнения путей на удаленной машине. Для этого нужно настроить аутентификацию пользователя по публичному ключу.
Для начала сгенерируем открытый и закрытый ключ:
ssh-keygen
Вывод:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wJQ/XBZq69qXGHxseTuccUEpzWYHhsVVHcDXE3MrTHQ user@host
В конце вывода будет графическое представление ключа (key’s randomart image), которое легче запомнить, чем хэш ключа.
По умолчанию ключи (id_rsa.pub — открытый, id_rsa — закрытый) сохранятся в домашнем каталоге пользователя в директории .ssh. Также во время генерации программа попросит ввести пароль, которым будут защищены ключи. Если не хотите дополнительной защиты, нажмите два раза Enter.
Теперь копируем публичный ключ на удаленную машину:
ssh-copy-id [имя пользователя]@[ip-адрес]
Здесь [имя пользователя] — учетная запись пользователя, под которой будем логиниться на удаленной машине, [ip-адрес] — адрес удаленной машины (можно использовать доменное имя, если они локально резолвится). Далее вводим пароль пользователя. Если все прошло корректно, то в выводе будет команда для удаленного подключения:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '<имя пользователя>@<ip-адрес>'"
and check to make sure that only the key(s) you wanted were added.
Secure copy (SCP)
Для копирования небольших объемов информации (например, конфиги сервисов) лучше всего подойдет утилита scp.
Синтаксис команды для копирования с локальной машины на удаленный сервер:
scp [путь к файлу] [путь к файлу] [имя пользователя]@[ip-адрес]:[путь к файлу]
Попробуем скопировать файл на сервер:
scp test.txt user@192.168.1.29:/home/user/
Вывод:
test.txt 100% 12 20.6KB/s 00:00
Можно передать несколько файлов за раз. Для этого указываем пути, разделенные пробелами:
scp test1.txt test2.txt user@192.168.1.29:/home/user/
Для копирования с удаленного сервера на локальную машину нужно поменять источник и место назначения местами:
scp user@192.168.1.29:/home/user/test.txt ~/
Для передачи директории используйте ключ -r
:
scp -r testdir user@192.168.1.29:/home/user/
Также имеется возможность передачи с одного удаленного сервера на другой:
scp gendo@192.168.1.25:/home/gendo/test.txt user@192.168.1.29:/home/user/
Secure FTP (SFTP)
Еще одной утилитой для передачи файлов, поставляемых в OpenSSH, является sftp. C релизом OpenSSH 9.0 утилита scp переведена по умолчанию на использование SFTP вместо устаревшего протокола SCP/RCP. Sftp работает практически также, как и классический ftp, за исключением того, что в sftp данные передаются не в виде обычного текста, а по зашифрованному туннелю (туннелирование — это процесс упаковки и передачи одного сетевого подключения с помощью другого). Также для работы sftp не нужен отдельный FTP-сервер.
Пример простого скачивания через sftp:
gendo@melhior:~$ sftp misato@192.168.1.29
Connected to 192.168.1.29.
sftp> ls
file.txt file1.txt file2.txt test.txt
sftp> lcd testdir/
sftp> get test.txt
Fetching /home/misato/test.txt to test.txt
test.txt 100% 12 4.8KB/s 00:00
sftp> bye
Сам по себе sftp применяется редко: вместо этого его используют файловые менеджеры, например Midnight Commander и Nautilus:
Использование sftp в файловом менеджере Nautilus. Удаленная машина отображается в виде папки с именем пользователя и IP-адресом.
Копирование файлов по SSH в Windows
Скачать файл с сервера или на сервер в Windows можно с помощью консольной программы pscp, поставляемой вместе с PuTTY. Синтаксис очень похож на обычный scp:
pscp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
Для SSH-копирования файлов на сервер, используйте следующую команду:
pscp C:\server\test.txt misato@192.168.1.29:/home/misato/
Скачивание файла с сервера на компьютер:
pscp misato@192.168.1.29:/home/misato/test.txt C:\file.txt
Увидеть список файлов на сервере можно при помощи опции -ls
:
pscp -ls [имя пользователя]@[ip-адрес]:[путь]
Если в пути или в названии файла есть пробелы, используйте кавычки:
pscp "C:\dir\bad file name" misato@192.168.1.29:/home/misato
Для получения помощи по команде введите pscp без аргументов.
Заключение
Мы рассмотрели, как копировать файлы на сервер и с сервера с помощью безопасного сетевого протокола SSH. Если вы используете облачные серверы, важно уметь работать с SSH, так как он является стандартом для удаленного доступа к *nix-машинам и будет необходим вам в повседневной работе.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.