ГлавнаяОперационные системыLinuxКак безопасно передавать файлы в Linux с помощью SCP

Как безопасно передавать файлы в Linux с помощью SCP

Использование прокси с SCP

использования пропускной способности в SCPколько вариантов. Один из лучших способов — использовать программу Secure Copy, или SCP, которая работает по протоколу SSH для быстрой передачи файлов по сети в удаленную систему. В этом руководстве показано, как безопасно передавать файлы с помощью SCP в Linux.

Настройка SSH

На вашем удаленном сервере вам необходимо установить SSH-сервер. Наиболее распространенным в Linux является сервер OpenSSH. Чтобы установить его, выполните одну из следующих команд:

# Debian/U

Настройка SSH

an> sudo apt install ssh   # Fedora sudo dnf install openssh
Scp Transfer Linux 01 Установка Ssh

В зависимости от вашего дистрибутива вам может потребоваться разрешить SSH через некоторые программные брандмауэры. В Ubuntu этой проблемы нет, но в Fedora вам также придется выполнить следующие команды:

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
Scp Transfer Linux 02 Fedora Включить брандмауэр<

Подключение к вашей системе через SSH

Прежде чем подключиться по SSH, вам необходимо узнать IP-адрес удаленного сервера. На графических серверах IP-адрес отображается в апплете «Сеть» в настройках системы. На большинстве серверов вам следует использовать команду ipв терминале.

ip addr
Scp Transfer Linux 04 Проверить IP-адрес

В выводе найдите строку, начинающуюся с inet, в разделе ethXили enpXsy, в зависимости от способа подключения вашего сетевого интерфейса. система. В моем случае это 192.168.68.108.

Чтобы проверить SSH-соединение, перейдите на другой компьютер с Linux и введите:

ssh user@remote.machine.ip.address

Измените «пользователь» на фактическое имя пользователя на сервере.

Подключение к вашей системе через SSHcp-transfer-linux-05-connecting-to-remote-server.png" alt="Scp Transfer Linux 05 Подключение к удаленному серверу">

Введите пароль этой учетной записи, и вы в деле. Если вам зададут вопрос «подлинность хоста не может быть установлена», просто ответьте «да». Это проверка безопасности, предназначенная для того, чтобы убедиться, что вы подключаетесь к своему реальному серверу, а не к мошеннику. В вашей клиентской системе вы должны увидеть то же приглашение, которое вы видите при входе непосредственно на сервер, что означает, что ваше соединение прошло успешно. Вам также должно быть настройте свои SSH-соединения для максимальной безопасности или даже настроить двухфакторную аутентификацию , прежде чем переходить к следующему шагу.

Использование SCP для передачи файлов

Теперь, когда вы проверили SSH-соединение, начните копировать файлы между двумя компьютерами. Безопасное копирование осуществляется с помощью команды scp. Основной формат команды scp:

scp /PATH/TO/FILE USER@IP-ADDRESS:PATH/TO/DESIRED/DESTINATION

Например, чтобы скопировать файл «backup.tar.gz» с локального компьютера в папку «backups» в домашнем каталоге пользователя «ramces» на удаленном сервере с IP-адресом 192.168.68.165, используйте :

scp backup.tar.gz ramces@192.168.68.165:~/backups/
Scp Transfer Linux 06 Базовое копирование

Аналогично при подключении с помощью sshвам будет предложено ввести пароль. Вам не будет предложено ввести имя пользователя, как оно было указано в команде.

Вы также можете использовать подстановочные знаки, например:

scp *.tar.gz ramces@192.168.68.165:~/backups/
Scp Transfer Linux 07 Соответствующая копия Glob

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

scp ramces@192.168.68.165:~/backups/backup.tar.gz ./
Scp Transfer Linux 08 Обратное копирование

Обратили внимание на точку в конце команды? Оно означает «текущий каталог», как и стандартные команды cpили mv. Если хотите, вы можете с тем же успехом указать и другой каталог.

Использование SCP для передачи файловes@192.168.68.165:~/backups/ backups-from-server/

То же самое с подстановочными знаками:

scp ramces@192.168.68.165:~/backups/*.txz ./

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

scp -r backups/ ramces@192.168.68.165:~/backups/
Scp Transfer Linux 09 Рекурсивное копирование

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

scp -r ramces@192.168.68.165:~/backups/ ./
Scp Transfer Linux 10 Обратное рекурсивное копирование

Сжатие передаваемых файлов в SCP

Помимо базового копирования, также можно изменить поведение SCP во время передачи файлов. Например, вы можете использовать флаг -Cдля сжатия данных, которые SCP отправляет удаленным клиентам:

scp -C backup.tar.gz ramces@192.168.68.165:/home/ramces/

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

Scp Transfer Linux 11 Копирование со сжатием данных

Подобно описанным выше параметрам, вы также можете использовать -Cвместе с флагом -rдля рекурсивного сжатия и передачи файлов на удаленный компьютер. Например, следующая команда сжимает и извлекает файл «backup.tar.gz» с моего удаленного сервера:

scp -Cr ramces@192.168.68.165:/home/ramces/backups /home/ramces/
Scp Transfer Linux 12 Копирование с обратным сжатием данных<

Оптимизация передачи данных с помощью SCP

По большей части SCP пытается использовать алгоритм шифрования AES-128 для всех передач файлов. Однако бывают случаи, когда этот конкретный алгоритм не подходит для файлов, которые вы хотите перенести.

Зная это, можно дополнительно оптимизировать и защитить SCP, напрямую изменив алгоритм шифрования для конкретной передачи. Для этого вам нужно использовать флаг -c, за которым следует шифр, который вы хотите использовать.

Например, следующая команда передает файл «backup.tar.gz» на мой удаленный сервер с использованием AES-256:

scp -c aes256-ctr ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 13 Изменить шифр по умолчанию

Кроме того, опция -cтакже позволяет вам предоставить список шифров, которые вы хотите использовать для передачи конкретного файла. Например, следующая команда использует как AES-192, так и AES-256 при передаче файла «backup.tar.gz» на мой удаленный сервер:

scp -c aes192-ctr,aes256-ctr ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 14 Создание сп<h2><span id=Сжатие передаваемых файлов в SCPОграничение использования пропускной способности в SCP

Хотя сжатие файловых пакетов может помочь вам использовать SCP в плохих условиях сети, также можно ограничить полосу пропускания, используемую программой во время передачи. Это полезно в тех случаях, когда вы используете лимитное соединение и не хотите, чтобы SCP доминировал над пропускной способностью вашей сети.

Чтобы ограничить эффективную пропускную способность программы, вам необходимо использовать флаг -l, за которым следует верхний предел, который вы хотите, в килобитах в секунду (Кбит/с). Например, выполнение следующей команды передаст файл «backup.tar.gz» на мой удаленный сервер с эффективной пропускной способностью 1600 Кбит/с:

scp -l 1600 ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 15 Ограничивает пропускную способность во время копирования

Удаленное переключение на удаленное с помощью SCP

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

Для передачи между двумя удаленными серверами вам необходимо явно указать имя пользователя и адрес каждого из этих компьютеров. Например, выполнение следующей команды перенесет мой файл «remote-backup.tar.gz» между двумя удаленными серверами:

scp ramces@192.168.68.108:/home/ramces/remote-backup.tar.gz ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 16 Удален<h2><span id=Оптимизация передачи данных с помощью SCPh2>Использование прокси с SCP

По умолчанию SCP использует IP-адрес вашего локального компьютера при передаче файлов между разными хостами. Хотя в обычных ситуациях это вполне нормально, это может стать проблемой, если ваша локальная сеть ограничивает любую активность SCP. Один из быстрых способов решения этой проблемы — передать локальное соединение через SSH-прокси.

Для этого вам нужно использовать флаг -o, а затем опцию ProxyCommand. Это позволяет вам создать базовое SSH-соединение с новым компьютером, который, в свою очередь, выполнит вашу команду SCP. Например, выполнение следующей команды создаст новый SSH-прокси на удаленном компьютере и передаст с его помощью файл «backup.tar.gz»:

scp -o "ProxyCommand ssh [email protected] nc %h %p" ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 17 Обход прокси-сервера Ssh

Изменение порта по умолчанию в SCP

Помимо создания базового SSH-прокси, вы также можете изменить порт по умолчанию для SCP. Это особенно полезно, если вам защита вашего Linux-сервера и вы не хотите раскрывать порты по умолчанию.

Чтобы использовать SCP с другим портом, вам необходимо использовать флаг -P, за которым следует номер порта, который вы хотите использовать. Например, следующая команда рекурсивно скопирует мой «резервный» каталог и подключится к удаленному серверу через порт 2222:

scp -r -P 2222 ./backup ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 18 с использованием пользовательского порта

Использование тихого режима SCP

Наконец, также можно полностью удалить любой вывод терминала из команды SCP. Это особенно полезно, если вы хотите создать неинтерактивный сценарий, который будет запускаться на вашем компьютере. Более того, вы также можете полностью автоматизировать этот процесс с помощью создание cronjob и передача закрытого ключа SSH на своем сервере.

Чтобы создать тихую передачу SCP, вам необходимо использовать флаг -q. Например, следующая команда автоматически перенесет мой файл «backup.tar.gz» на удаленный сервер:

scp -q ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Scp Transfer Linux 19 Тихий режим<

Часто задаваемые вопросы

Мой удаленный обмен данными в SCP не работает. Как я могу это исправить?

Эта проблема, скорее всего, связана с заблокированным портом в одном из файлов конфигурации вашего удаленного компьютера. Чтобы устранить эту проблему, убедитесь, что порт по умолчанию для SSH открыт на обоих ваших компьютерах.

Эта проблема также может быть связана с тем, что один из ваших удаленных компьютеров находится за соединением CG-NAT, поэтому любое внешнее соединение с вашим удаленным компьютером не будет решено должным образом. Чтобы это исправить, вам необходимо использовать программу виртуальной локальной сети, например Удаленное переключение на удаленное с помощью SCPtle="Иггдрасиль">Иггдрасиль , которая позволит вам пройти через CG-NAT.

Я запустил прокси-сервер SCP, и удаленный хост закрыл соединение. Что я могу сделать?

Эта проблема, скорее всего, связана с проблемой вашего прокси-сервера. Чтобы правильно запустить SSH-прокси, убедитесь, что на компьютере, который вы хотите использовать, есть сервер OpenSSH и netcat. Чтобы установить эти программы в Ubuntu, выполните следующую команду: sudo apt install ssh netcat.

Можно ли знать все доступные шифры SCP?

По умолчанию программа SCP в своих криптографических функциях в значительной степени использует протокол SSH. По этой причине вы можете использовать программу SSH для печати списка шифров, которые можно использовать вместе с SCP. Например, вы можете запустить ssh -Q ciphers, чтобы распечатать краткий список всех доступных шифров на вашем компьютере.

Изображение предоставлено: Unsplash . Все изменения и скриншоты Рамсеса Реда.

Изменение порта по умолчанию в SCP

Использование тихого режима SCP

Часто задаваемые вопросы

Мой удаленный обмен данными в SCP не работает. Как я могу это исправить?

Я запустил прокси-сервер SCP, и удаленный хост закрыл соединение. Что я могу сделать?

Можно ли знать все доступные шифры SCP?

ПОХОЖИЕ СТАТЬИ

Популярные записи