Копиране на файлове чрез SSH
SSH (Secure Shell) е широко използван протокол за сигурен достъп и управление на отдалечени сървъри чрез криптирана връзка. Една от най-често срещаните задачи при работа със SSH е копирането на файлове между вашата локална машина и отдалечен сървър или между два отдалечени сървъра.
В тази статия ще разгледаме различни начини за копиране на файлове чрез SSH, включително използване на SCP (Secure Copy Protocol), rsync и други методи.
Защо да използваме SSH за прехвърляне на файлове?
Използването на SSH за прехвърляне на файлове има няколко предимства:
- Сигурност: SSH криптира както командата, така и данните по време на предаването, което гарантира, че чувствителната информация е защитена.
- Ефективност: SSH е бърз и надежден, като ви позволява да прехвърляте файлове директно между системите, без да е необходимо да влизате отделно.
- Автоматизация: SSH може да се интегрира в скриптове, което позволява автоматизирано прехвърляне на файлове между сървъри или локални машини.
1. Копиране на файлове с SCP (Secure Copy Protocol)
SCP е един от най-популярните инструменти за сигурно копиране на файлове чрез SSH. Той ви позволява да прехвърляте файлове от локална машина към отдалечен сървър, от отдалечен сървър към вашата локална машина или между два отдалечени сървъра.
Основен синтаксис на SCP:
Пример 1: Копиране на файл от локална машина на отдалечен сървър
В този пример:
- /path/to/local/file е пътят до файла на вашата локална машина.
- username@remote_host е SSH потребителят и името на хоста или IP адресът на отдалечения сървър.
- /path/to/remote/destination е пътят, по който файлът ще бъде съхранен на отдалечения сървър.
Пример 2: Копиране на файл от отдалечен сървър на местната машина
В този случай файлът се прехвърля от отдалечения сървър на локалната машина.
Пример 3: Рекурсивно копиране на директория
За да копирате цяла директория, използвайте опцията -r (рекурсивно):
Това ще прехвърли директорията и цялото ѝ съдържание на отдалечения сървър.
Полезни опции на SCP:
- -P [порт]: Посочете порта на SSH, ако е различен от този по подразбиране (22).
- -C: Включете компресията по време на прехвърлянето за по-бързо копиране на файлове.
- -i [identity_file]: Използвайте конкретен частен ключ SSH за удостоверяване.
2. Копиране на файлове с rsync
rsync е друг мощен инструмент за прехвърляне на файлове през SSH. Често се предпочита за прехвърляне на големи или повтарящи се файлове, тъй като копира само промените между източника и дестинацията, спестявайки време и честотна лента.
Основен синтаксис на rsync:
Пример 1: Копиране на файл от локална машина на отдалечен сървър
Пример 2: Копиране на директория с rsync
Полезни опции на rsync:
- -a: Режим на архивиране, при който се запазват символните връзки, разрешенията, времевите маркери и собствеността на файловете.
- -v: Вербален режим за показване на напредъка по време на прехвърлянето.
- -z: Активирайте компресията, за да ускорите прехвърлянето.
- –delete: Премахване на файлове в дестинацията, които вече не съществуват в източника.
- -e “ssh -p [порт]”: Посочете потребителски порт на SSH.
3. Копиране на файлове между два отдалечени сървъра
С помощта на SSH можете също така да копирате файлове директно между два отдалечени сървъра. Това се поддържа както от SCP, така и от rsync.
Пример 1: Копиране на файлове между два отдалечени сървъра с SCP
Пример 2: Копиране на файлове между два отдалечени сървъра с rsync
Това е особено полезно за прехвърляне на файлове между сървъри, без да се налага първо да ги изтегляте на локалната си машина.
4. Копиране на файлове с SFTP (SSH File Transfer Protocol)
SFTP е друг метод за сигурно прехвърляне на файлове през SSH. Той е подобен на FTP, но използва SSH за осигуряване на криптиране. SFTP обикновено се използва в интерактивни сесии, но може да бъде и автоматизиран.
Използване на SFTP:
За да стартирате SFTP сесия, изпълнете следната команда:
След като влезете в прозореца на SFTP, можете да използвате команди като:
- put /path/to/local/file /path/to/remote/destination: Качвате файл от локалната си машина на отдалечения сървър.
- get /path/to/remote/file /path/to/local/destination: Получете /path/to/remote/file /path/to/local/destination: Изтегляне на файл от отдалечения сървър на вашата локална машина.
- mput и mget: За качване или изтегляне на няколко файла наведнъж.
За да прекратите SFTP сесията, въведете exit или quit.
5. Автоматизиране на прехвърлянето на файлове със SSH ключове
При многократни прехвърляния на файлове е добре да настроите удостоверяване, базирано на SSH ключове, за да не се налага да въвеждате паролата си всеки път.
Стъпка 1: Генериране на двойка SSH ключове (ако нямате такъв)
На локалната си машина стартирайте:
Това ще генерира двойка публичен и частен ключ.
Стъпка 2: Копиране на публичния ключ на отдалечения сървър
Използвайте следната команда, за да копирате публичния си ключ на отдалечения сървър:
Сега можете да влизате и да прехвърляте файлове, без да е необходимо да въвеждате парола, което улеснява автоматизацията.
Заключение
Копирането на файлове чрез SSH е сигурен и ефективен начин за прехвърляне на данни между локалната ви машина и отдалечен сървър или между два отдалечени сървъра. Независимо дали използвате SCP, rsync или SFTP, SSH предлага криптирано прехвърляне на файлове, което предпазва данните ви от прихващане. Инструменти като SCP са лесни за еднократни трансфери, докато rsync е идеален за текущи задачи за синхронизация, особено за големи файлове или директории. Разбирането на тези инструменти ще ви помогне да управлявате по-ефективно прехвърлянето на файлове, особено в среда на отдалечен сървър.