Копирование файлов через ssh
Обновлено: 21.11.2024
Подключение к серверу через SSH является одним из основных способов управления серверами *nix. Довольно часто необходимо загрузить файл на удаленный сервер или выгрузить его, но других способов, кроме подключения по SSH, нет. К счастью, одной из штатных функций этого протокола является копирование файлов через защищенное соединение. Вы можете реализовать это с помощью команды scp в системах Linux или с помощью pscp.exe, который является частью SSH-клиента Putty в операционной системе Windows.
Использование ОС Linux
Выполните следующие команды:
scp [модификатор] [источник] [целевой_каталог]
Если удаленный сервер служит исходным или целевым каталогом, выполните следующие команды:
После запуска команды необходимо ввести пароль для учетной записи удаленного сервера.
Подводя итог, вы можете скопировать локальный файл с именем: /home/user/file.tgz в домашний каталог пользователя root на удаленном сервере 123.123.123.123, выполнив следующую команду:
scp /home/user/file.tgz root@123.123.123.123:/root
Чтобы загрузить тот же файл с удаленного сервера:
scp root@123.123.123.123:/root/file.tgz /home/user
Вы можете копировать несколько файлов одновременно. Для этого необходимо добавить их в качестве источника. Разделяйте их пробелом — последний параметр будет считаться целевым каталогом. Например, для загрузки файлов file1 files.tgz и file2.tgz из локальной директории на удаленный сервер необходимо выполнить команду:
scp file1.tgz file2.tgz root@123.123.123.123:/root
Чтобы скопировать каталог, вам потребуется использовать модификатор команды –r. Скопируйте локальный каталог /home/user/dir на удаленный сервер:
scp-r /home/user/dir root@123.123.123.123:/root
Когда сервер SSH работает на порту, отличном от порта по умолчанию, нам нужна помощь с параметром -P. Если вам нужно использовать порт 10022:
scp-P 10022 /home/user/file.tgz root@123.123.123.123:/root
Чтобы узнать, какие еще модификаторы можно использовать, просто запустите scp без параметров и прочтите справку.
Использование ОС Windows
При использовании операционной системы Windows и Putty в качестве клиента форматирование команд остается прежним. Однако мы изменим имя исполняемого файла. Нам нужно использовать синтаксис для указания путей к файлам и каталогам Windows при упоминании исходных или целевых каталогов. Запустите командную строку (cmd.exe) или PowerShell, откройте директорию с файлом pscp.exe и введите команду:
pscp.exe C: Tempfile.tgz root@123.123.123.123:/root
Если вы запускаете его из другой папки, вам нужно будет указать полный путь к pscp.exe. Если какой-либо из путей содержит пробелы, нам нужно использовать двойные кавычки — «путь к файлу»:
«C:Program FilesPuttypscp.exe» C:Tempfile.tgz root@123.123.123.123:/root
Просто запустите pscp (аналогично scp) без параметров и прочтите справку по модификаторам, а также информацию о синтаксисе команды.
Выполнение команд на удаленном сервере с использованием SSH-соединения
Протокол SSH поддерживает как интерактивные сеансы, так и обычные команды и сценарии на удаленном сервере.
Использование ОС Linux
ssh [пользователь]@[сервер] ‘[команда]’
Введите пароль указанного пользователя и получите вывод команды в консоли SSH, если таковая имеется.
Например, мы можем найти информацию об операционной системе, установленной на удаленном сервере:
ssh root@123.123.123.123 ‘uname -a’
Чтобы запустить несколько команд с использованием одного соединения, вы можете использовать символ «;». символ в качестве разделителя. Проверьте сетевые настройки и активные сетевые подключения на удаленном сервере:
ssh root@123.123.123.123 ‘ifconfig; netstat -anp tcp’
Если вам нужно запустить локальный файл скрипта на удаленном сервере: запустите интерпретатор команд (в режиме выполнения скрипта). Его можно башнуть с ключом -s и передать ему файл скрипта для стандартного ввода. Взгляните на пример ниже:
Локальный файл: /home/user/myscript.sh будет выполняться на удаленном сервере.
Выполнение команды SSH без параметров позволяет увидеть краткую справку по синтаксису и список дополнительных модификаторов, позволяющих расширить функциональные возможности команды.
Использование ОС Windows
Для подключения к удаленному серверу мы будем использовать клиент Putty с исполняемым файлом plink.exe. Файл, если наш компьютер поддерживает Windows. Используйте командную строку (cmd.exe) или PowerShell для работы с этим файлом.
Чтобы запустить команду на удаленном сервере, используйте следующий синтаксис:
plink.exe [сервер] - ssh-l [пользователь] «[команда]»
Проверьте конфигурацию сетевых интерфейсов:
plink.exe 123.123.123.123 -ssh-l root «ifconfig»
plink.exe позволяет использовать «;» в качестве разделителя для запуска нескольких команд, аналогично команде SSH в Linux:
plink.exe 123.123.123.123 -ssh-l root «ifconfig; netstat-anp tcp”
Вы можете запускать команды из локального файла, используя дополнительный ключ -m:
plink.exe 123.123.123.123 -ssh-l root-m «C:Tempmyscript.sh»
Выполнив команду plink.exe без параметров, вы получите краткий справочник по синтаксису и список дополнительных модификаторов команды.
Как перенести веб-сайт с одного сервера на другой? У вас есть несколько вариантов. Один из самых распространенных — загрузить весь сайт на компьютер и загрузить его на свой новый сервер. Или вы можете использовать сторонние инструменты FTP для доступа к обоим серверам и перемещения файлов между ними с вашим компьютером посередине. Но есть и другой метод, который вы можете попробовать: передача файлов через Secure Shell (SSH). Ниже мы рассмотрим, как это работает.
Что такое SSH?
SSH – это безопасный сетевой протокол, который позволяет безопасно использовать сетевые службы, создавая безопасный канал в незащищенной сети. Но он работает через командную строку, в отличие от большинства сторонних FTP-приложений. Вы можете выбрать либо командную строку Windows, либо терминал в системах Mac и Linux для использования SSH.
Однако SSH — это встроенная функция в системах Mac и Linux, поэтому вы можете использовать ее прямо из коробки. А поскольку большинство серверов работает под управлением Linux, SSH должен быть доступен по умолчанию, если только ваш сервер не подключен к Internet Information Service (IIS), эквиваленту Windows.
В результате вам не нужно будет устанавливать сторонние приложения (кроме Putty), чтобы следовать приведенному ниже руководству.
Что такое протокол безопасного копирования (SCP)?
Отправка файлов по SSH основана на протоколе SCP: это метод безопасной передачи файлов и папок с компьютера на компьютер. Он основан на используемом с ним протоколе SSH.
Клиент может использовать SCP для безопасной загрузки файлов на удаленный сервер, загрузки файлов или даже передачи файлов через SSH между удаленными серверами. Мы сосредоточимся на этом ниже.
Передача файлов через SSH между удаленными серверами
Давайте узнаем, как использовать компьютер Windows для подключения к удаленному серверу Mac или Linux (после установки Putty).
Шаг первый
Используйте веб-консоль удаленных серверов для входа в систему. Получите доступ к их панелям управления и убедитесь, что SSH включен. Выполните следующие действия:
- SSH, как правило, изначально отключен по умолчанию, поэтому вам может потребоваться включить его. Если вы не знаете, как это сделать, посмотрите документацию к вашей серверной ОС или обратитесь в службу поддержки провайдера.
- Запишите назначенное имя пользователя SSH: оно будет создано вами или сервером, в зависимости от операционной системы сервера.
- Введите пароль дважды (для подтверждения), чтобы завершить создание учетной записи SSH — вы можете изменить пароль, но у серверов есть свои способы сделать это.
- Запишите информацию о подключении Secure Shell — она понадобится вам для подключения к удаленному серверу при использовании клиента SSH.
- Запишите ключ хоста ваших серверов (в целях безопасности).
Шаг второй:
Запустите Putty и настройте подключение к удаленному серверу SSH.
- В окне "Конфигурация" введите необходимые данные в поле "Имя хоста".
- Установите связь.
- Putty покажет вам предупреждение системы безопасности, если вы впервые подключаетесь к серверу. Но если это НЕ первый раз и вы все еще получаете оповещение, будьте осторожны. Возможно, хакер атаковал вас с помощью атаки «человек посередине», пытаясь захватить ваше соединение и получить ваш пароль.
- Удовлетворены тем, что это подлинное соединение? Нажмите кнопку Да. Putty отобразит окно терминала и предложит вам ввести имя пользователя, а затем пароль. Введите информацию. Когда вы вводите пароли через SSH, на экране нет ответа. Просто введите свой пароль и нажмите кнопку «Ввод»!
- При правильном вводе пароля в окне терминала отображается командная строка на сервере. Вы можете вводить команды в это окно терминала и пользоваться ограниченным управлением сервером. В этом окне видны все ответы сервера.
Шаг третий:
- Найдите нужную папку на удаленном сервере (через Putty).
- Проверьте содержимое папки, чтобы убедиться, что ни одному из ее файлов или папок не присвоено имя, идентичное именам файлов или папок, которые вы собираетесь перенести. Если это так, попробуйте переименовать или удалить их или переместить в другую папку.
- С помощью безопасного копирования передавайте файлы с сервера на сервер. Вот синтаксис безопасного копирования ("scp" включает эту функцию): scp [переключатель] [расположение исходного содержимого] [местоположение целевого содержимого]
- «Переключиться» необязательно. Если вы хотите передать файл по SSH (только один) или несколько файлов, хранящихся в каталоге и предназначенных для совместного использования в одной и той же папке, вам НЕ потребуется переключатель. Но он вам ПОНАДОБИТСЯ, если вы планируете переносить целые папки, и это «рекурсивный переключатель» (-r).
- -r — не единственный доступный ключ — вы можете использовать множество других для управления SCP (но мы не будем вдаваться в подробности в этом руководстве).
- Синтаксис местоположения контента зависит от его местоположения. Для контента, найденного на сервере, на который вы вошли, местоположением является каталог или имя файла, который вы хотите использовать. Например, «/var/www/dir». Но для контента, хранящегося на втором удаленном сервере, на который вы не вошли, все становится немного сложнее. Например,
[userid]@[URL-адрес или IP-адрес удаленного сервера 2]:[каталог или файл] — [email protected]:/var/www/
Итак, полный пример синтаксиса, необходимого для переноса каталога с удаленного сервера на удаленный сервер, будет выглядеть следующим образом (если пунктом назначения является сервер, на который вы вошли в данный момент):
Вас попросят ввести пароль для второго удаленного сервера. Вы не увидите его при вводе пароля, как раньше. Когда закончите, нажмите Enter.
Вы увидите, как начнется процесс передачи файла, если вы ввели правильный пароль для второго удаленного сервера. Теперь вы можете закрыть окно терминала: передача продолжится автоматически!
Если вы будете следовать этому пошаговому руководству, отправка файлов по SSH станет проще.
Я использую компьютер с Linux (centos), я уже подключился к другой системе с помощью ssh. Теперь мой вопрос: как я могу копировать файлы из одной системы в другую?
Предположим, в моей среде есть две системы, такие как System A и System B . Я использую компьютер с Системой A, а некоторые другие используют компьютер с Системой B.
Как скопировать файл из системы B в систему A? И скопировать файл из системы A в систему B?
отчасти связано: создайте зашифрованный архив локального каталога/ на удаленной машине с помощью ssh : tar -c dir/ | сжатие | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'
Если у вас есть доступ к ftp удаленного сервера, мы также можем использовать wget для загрузки, например $wget -r --level=9 --no-parent --reject "index.html*" ftp:// :@/путь/к ссылке1 ссылке2
Не повторяющийся, связанный вопрос конкретно просит не использовать scp ; для этого один scp подходит и является самым простым способом ответа, поэтому моды, пожалуйста, удалите дублирующийся флаг, так как если кто-то перейдет к другому, самый полезный ответ будет пропущен.
10 ответов 10
Чтобы скопировать файл из B в A при входе в B:
Чтобы скопировать файл из B в A при входе в A:
Чтобы уточнить, вы обычно не используете scp для копирования файла на локальный компьютер или с него (система A), когда вы вошли на удаленный сервер (система B) с помощью ssh . scp зарегистрирует вас на удаленном сервере, скопирует файл, а затем снова выйдет из системы в одном процессе, поэтому просто запустите его из оболочки на вашем локальном компьютере. При этом вы можете использовать scp, если вы вошли в систему B через SSH и хотите копировать файлы между системой B и системой C.
@DopeGhoti. Да, вы не можете перемещать файлы между двумя удаленными компьютерами. Либо источником, либо местом назначения должен быть локальный файл. Однако если вы войдете на удаленный компьютер с помощью ssh, вы сможете копировать файлы между двумя удаленными компьютерами из командной строки этого компьютера.
Кроме того, важно помнить, что вы можете использовать только scp для папки на целевом компьютере, для которой у вас есть разрешения. Если вы пытаетесь скопировать его в пункт назначения, на который у целевого пользователя нет разрешения, сначала скопируйте файл в домашний каталог или подкаталог пользователя, а затем ssh на целевой компьютер и sudo переместите его в конечный пункт назначения р>
SSH или Secure Shell — это протокол, обеспечивающий безопасный доступ к удаленным компьютерам. Приложения для передачи файлов, такие как sftp и rsync, также могут использовать SSH для защиты своей передачи.
Эти приложения позволяют нам копировать наши файлы с локальных на удаленные серверы и копировать файлы с удаленных серверов на наш локальный компьютер. Реализация SSH также поставляется с утилитой scp для удаленной передачи файлов, которая по умолчанию использует протокол SSH.
Ниже приведены примеры использования этих приложений для передачи файлов на основе описанной выше настройки:
Убедитесь, что у вас есть SSH доступ к удаленному серверу с соответствующими правами доступа к удаленным файлам и папкам
Способы удаленной передачи файлов по SSH:
Передача файла с помощью scp
Самый простой из них — scp или защищенное копирование. В то время как cp предназначен для копирования локальных файлов, scp предназначен для удаленной передачи файлов, где оба используют почти одинаковый синтаксис. Основное отличие состоит в том, что при использовании scp вам нужно будет указать DNS имя удаленного хоста или IP-адрес и предоставить учетные данные для входа в систему. команду на работу. Вы можете scp файлы перемещать с локального на удаленный и с удаленного на локальный.
Если целевая папка (/remote/folder/) не указана, файл будет скопирован в домашний каталог удаленного пользователя.
Использование . в качестве цели копирования (замена localfile.txt скопирует удаленный файл в текущий рабочий каталог, используя то же имя файла (remotefile.txt)
remoteuser должен существовать и иметь разрешение на запись в /remote/folder/ в удаленной системе.
Программы сграфическим интерфейсом, такие как WinSCP, также можно использовать для передачи файлов между локальным и удаленным хостом с помощью методов scp.
Передача файла по sftp
Связано: WinSCP также можно использовать для передачи файлов по протоколу SFTP, но с графическим интерфейсом. Другой популярный инструмент — FileZilla.
Передача файла с помощью rsync
Вы также можете использовать ssh для защиты сеанса rsync. Для этого используйте --rsh=ssh или -e “ssh” с вашими обычными командами rsync. Следующие 2 команды будут работать точно так же;
Если эти параметры не указаны, rsync сначала попытается подключиться к rsyncd, но автоматически переключится на SSH, если rsyncd не запущен в удаленной системе.
Смонтировать удаленную файловую систему локально
Удаленные файловые системы могут быть смонтированы на локальном хосте и доступны как локальная файловая система. Для монтирования удаленной файловой системы требуется SSH доступ к удаленному хосту и использование sshfs.
сообщить об этом объявлении
Автор: Мохд Шакир Закария
Облачный архитектор по профессии, но всегда считал себя разработчиком, предпринимателем и энтузиастом открытого исходного кода.
Оставляйте комментарии анонимно. Логин не требуется.
сообщить об этом объявлении
Rsync означает «удаленная синхронизация». Это удаленный и локальный инструмент синхронизации файлов, который поможет вам эффективно передавать файлы.
Что такое RSync
Rsync работает быстрее, чем такие инструменты, как протокол безопасного копирования (SCP). Он использует алгоритм дельта-переноса, который сводит к минимуму передачу данных, копируя только те разделы файла, которые были обновлены.
Некоторые из дополнительных функций Rsync включают:
- Поддерживает копирование ссылок, устройств, владельцев, групп и разрешений.
- Не требует прав суперпользователя
- Конвейерная передача файлов для минимизации затрат на задержку.
Вы можете передавать файлы только с локального на удаленный или с удаленного на локальный. Rsync не поддерживает передачу удаленных файлов друг другу.
Как работает RSync
Теперь, когда вы знаете, что такое Rsync, давайте посмотрим, как с ним работать.
Rsync работает аналогично другим инструментам удаленного управления серверами, таким как SSH и SCP.
Вот основной синтаксис Rsync:
Вот синтаксис для передачи файла из вашей локальной системы на удаленный сервер. Это также называется операцией «push».
Вот как передать файл с удаленного сервера в вашу локальную систему, что также называется операцией «вытягивания».
Примечание. При работе с удаленными системами убедитесь, что у вас есть SSH-доступ к удаленной системе. Rsync устанавливает соединение с помощью SSH, чтобы включить передачу файлов.
Как использовать флаги в RSync
Rsync позволяет добавлять дополнительные параметры с помощью флагов командной строки. Давайте рассмотрим несколько полезных флагов.
Рекурсивный
Если вы добавите параметр -r, RSync выполнит рекурсивную передачу файлов. Это полезно при работе с каталогами. Вот пример:
Архив
Флаг -a используется для сохранения символических ссылок при передаче файлов. Флаг архива также сохраняет специальные файлы и файлы устройств, время модификации и разрешения исходного каталога.
Флаг архива также рекурсивно синхронизирует файлы, поэтому он используется чаще, чем флаг рекурсии. Вот как вы его используете:
Сжатие
Вы также можете сжимать файлы, используя флаг -z. Сжатие файлов может снизить нагрузку на сеть и ускорить передачу файлов.
Прогресс
Для передачи больших файлов полезно знать ход выполнения операции. Вы можете использовать флаг -P, чтобы узнать ход передачи файла. С помощью Rsync вы также можете возобновить передачу файлов, если она была прервана.
Подробно
Наконец, подробная команда поможет вам понять каждый шаг передачи файла. Для этого вы можете использовать флаг -v.
Вы также можете использовать команду help с RSnsc, чтобы получить список всех опций и флагов.
помощь по rsync
Заключение
Rsync упрощает весь процесс передачи файлов, предлагая надежный, универсальный и гибкий инструмент по сравнению с такими альтернативами, как SCP.
RSync отлично подходит для операций обслуживания, резервного копирования и общих операций с файлами между локальными и удаленными компьютерами.
Ссылки
Меня зовут Маниш, и я пишу о кибербезопасности, искусственном интеллекте и DevOps. Если вам понравилась эта статья, вы можете найти мой блог здесь.
Если вы дочитали до этого места, отправьте твит автору, чтобы показать, что вам не все равно. Твитнуть спасибо
Научитесь программировать бесплатно. Учебная программа freeCodeCamp с открытым исходным кодом помогла более чем 40 000 человек получить работу в качестве разработчиков. Начать
freeCodeCamp – это поддерживаемая донорами некоммерческая организация, освобожденная от налогов в соответствии со статьей 501(c)(3) (идентификационный номер федерального налогоплательщика США: 82-0779546)
Наша миссия: помочь людям научиться программировать бесплатно. Мы достигаем этого, создавая тысячи видеороликов, статей и интерактивных уроков по кодированию — все они находятся в свободном доступе. У нас также есть тысячи учебных групп freeCodeCamp по всему миру.
Пожертвования в пользу freeCodeCamp идут на наши образовательные инициативы и помогают оплачивать серверы, услуги и персонал.
Читайте также: