Использование прокси с SCP
использования пропускной способности в SCPколько вариантов. Один из лучших способов — использовать программу Secure Copy, или SCP, которая работает по протоколу SSH для быстрой передачи файлов по сети в удаленную систему. В этом руководстве показано, как безопасно передавать файлы с помощью SCP в Linux.Настройка SSH
На вашем удаленном сервере вам необходимо установить SSH-сервер. Наиболее распространенным в Linux является сервер OpenSSH. Чтобы установить его, выполните одну из следующих команд:
# Debian/UContents
- 1 Настройка SSH
- 2 Подключение к вашей системе через SSH
- 3 Использование SCP для передачи файлов
- 4 Сжатие передаваемых файлов в SCP
- 5 Оптимизация передачи данных с помощью SCP
- 6 Ограничение использования пропускной способности в SCP
- 7 Удаленное переключение на удаленное с помощью SCP
- 8 Использование прокси с SCP
- 9 Изменение порта по умолчанию в SCP
- 10 Использование тихого режима SCP
- 11 Часто задаваемые вопросы
Настройка SSH
an>
sudo apt install ssh
# Fedora
sudo dnf install openssh
В зависимости от вашего дистрибутива вам может потребоваться разрешить SSH через некоторые программные брандмауэры. В Ubuntu этой проблемы нет, но в Fedora вам также придется выполнить следующие команды:
sudo firewall-cmd --add-service=ssh --permanent sudo firewall-cmd --reload
Подключение к вашей системе через SSH
Прежде чем подключиться по SSH, вам необходимо узнать IP-адрес удаленного сервера. На графических серверах IP-адрес отображается в апплете «Сеть» в настройках системы. На большинстве серверов вам следует использовать команду ip
в терминале.
ip addr
В выводе найдите строку, начинающуюся с inet
, в разделе ethX
или enpXsy
, в зависимости от способа подключения вашего сетевого интерфейса. система. В моем случае это 192.168.68.108.
Чтобы проверить SSH-соединение, перейдите на другой компьютер с Linux и введите:
ssh user@remote.machine.ip.address
Измените «пользователь» на фактическое имя пользователя на сервере.
Введите пароль этой учетной записи, и вы в деле. Если вам зададут вопрос «подлинность хоста не может быть установлена», просто ответьте «да». Это проверка безопасности, предназначенная для того, чтобы убедиться, что вы подключаетесь к своему реальному серверу, а не к мошеннику. В вашей клиентской системе вы должны увидеть то же приглашение, которое вы видите при входе непосредственно на сервер, что означает, что ваше соединение прошло успешно. Вам также должно быть настройте свои 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/
Аналогично при подключении с помощью ssh
вам будет предложено ввести пароль. Вам не будет предложено ввести имя пользователя, как оно было указано в команде.
Вы также можете использовать подстановочные знаки, например:
scp *.tar.gz ramces@192.168.68.165:~/backups/
Чтобы скопировать файл с удаленного сервера на локальный компьютер, просто поменяйте местами параметры:
scp ramces@192.168.68.165:~/backups/backup.tar.gz ./
Обратили внимание на точку в конце команды? Оно означает «текущий каталог», как и стандартные команды cp
или mv
. Если хотите, вы можете с тем же успехом указать и другой каталог.
То же самое с подстановочными знаками:
scp ramces@192.168.68.165:~/backups/*.txz ./
Чтобы рекурсивно скопировать каталог на удаленный сервер, используйте параметр -r
:
scp -r backups/ ramces@192.168.68.165:~/backups/
Чтобы скопировать рекурсивную копию каталога с удаленного сервера на локальный компьютер, используйте:
scp -r ramces@192.168.68.165:~/backups/ ./
Сжатие передаваемых файлов в SCP
Помимо базового копирования, также можно изменить поведение SCP во время передачи файлов. Например, вы можете использовать флаг -C
для сжатия данных, которые SCP отправляет удаленным клиентам:
scp -C backup.tar.gz ramces@192.168.68.165:/home/ramces/
Эта опция работает путем сжатия каждого пакета данных при его отправке через программу SCP. Таким образом, это может быть невероятно полезно, если вы используете соединение с ограниченной пропускной способностью и хотите надежно отправить файл на удаленный сервер.
Подобно описанным выше параметрам, вы также можете использовать -C
вместе с флагом -r
для рекурсивного сжатия и передачи файлов на удаленный компьютер. Например, следующая команда сжимает и извлекает файл «backup.tar.gz» с моего удаленного сервера:
scp -Cr ramces@192.168.68.165:/home/ramces/backups /home/ramces/
Оптимизация передачи данных с помощью 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/
Кроме того, опция -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 в плохих условиях сети, также можно ограничить полосу пропускания, используемую программой во время передачи. Это полезно в тех случаях, когда вы используете лимитное соединение и не хотите, чтобы SCP доминировал над пропускной способностью вашей сети.
Чтобы ограничить эффективную пропускную способность программы, вам необходимо использовать флаг -l
, за которым следует верхний предел, который вы хотите, в килобитах в секунду (Кбит/с). Например, выполнение следующей команды передаст файл «backup.tar.gz» на мой удаленный сервер с эффективной пропускной способностью 1600 Кбит/с:
scp -l 1600 ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Удаленное переключение на удаленное с помощью 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 использует 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
Помимо создания базового SSH-прокси, вы также можете изменить порт по умолчанию для SCP. Это особенно полезно, если вам защита вашего Linux-сервера и вы не хотите раскрывать порты по умолчанию.
Чтобы использовать SCP с другим портом, вам необходимо использовать флаг -P
, за которым следует номер порта, который вы хотите использовать. Например, следующая команда рекурсивно скопирует мой «резервный» каталог и подключится к удаленному серверу через порт 2222:
scp -r -P 2222 ./backup ramces@192.168.68.165:/home/ramces/
Использование тихого режима SCP
Наконец, также можно полностью удалить любой вывод терминала из команды SCP. Это особенно полезно, если вы хотите создать неинтерактивный сценарий, который будет запускаться на вашем компьютере. Более того, вы также можете полностью автоматизировать этот процесс с помощью создание cronjob и передача закрытого ключа SSH на своем сервере.
Чтобы создать тихую передачу SCP, вам необходимо использовать флаг -q
. Например, следующая команда автоматически перенесет мой файл «backup.tar.gz» на удаленный сервер:
scp -q ./backup.tar.gz ramces@192.168.68.165:/home/ramces/
Часто задаваемые вопросы
Мой удаленный обмен данными в 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 . Все изменения и скриншоты Рамсеса Реда.