Команда sftp в Linux
Что такое sftp?
SFTP (SSH File Transfer Protocol) — это безопасный протокол передачи файлов, который передает файлы через зашифрованный канал SSH (Secure Shell). В отличие от традиционного FTP, SFTP обеспечивает более высокую безопасность, и все передаваемые данные шифруются.
Различия между SFTP и FTP
| Характеристика | SFTP | FTP |
|---|---|---|
| Безопасность | Зашифрованная передача | Передача в открытом виде |
| Порт | 22 (порт SSH) | 21 (порт управления) + 20 (порт данных) |
| Протокол | Основан на SSH | Независимый протокол |
| Совместимость с брандмауэром | Нужно открыть только один порт | Нужно открыть несколько портов |
Базовый синтаксис команды sftp
sftp [选项] [用户名@]主机名[:路径]
Общие параметры опций
| Опция | Описание |
|---|---|
-P 端口号 |
Указать порт подключения (по умолчанию 22) |
-b 批处理文件 |
Выполнять команды из пакетного файла |
-r |
Рекурсивно копировать весь каталог |
-v |
Отображать подробную отладочную информацию |
-i 私钥文件 |
Аутентифицироваться с помощью указанного файла закрытого ключа |
Подключиться к серверу SFTP
Базовый способ подключения
Пример
sftp username@hostname
Пример:
Пример
sftp user@example.com
Подключиться с указанным портом
Если сервер использует нестандартный порт (не 22):
Пример
sftp -P 2222 user@example.com
Использовать аутентификацию по ключу
Пример
sftp -i ~/.ssh/id_rsa user@example.com
Общие команды операций SFTP
1. Локальные файловые операции
| Команда | Описание |
|---|---|
lls |
Показать содержимое локального каталога |
lcd |
Сменить локальный рабочий каталог |
lmkdir |
Создать каталог локально |
lrm |
Удалить локальные файлы |
2. Удалённые файловые операции
| Команда | Описание |
|---|---|
ls |
Показать содержимое удалённого каталога |
cd |
Сменить удалённый рабочий каталог |
mkdir |
Создать каталог удалённо |
rm |
Удалить удалённые файлы |
rename |
Переименовать удалённые файлы |
3. Передача файлов
| Команда | Описание |
|---|---|
put 本地文件 [远程路径] |
Загрузить файлы на удалённый сервер |
get 远程文件 [本地路径] |
Скачать файлы с удалённого сервера |
mput 本地文件* |
Загрузить несколько файлов |
mget 远程文件* |
Скачать несколько файлов |
Практические примеры
Пример 1: Загрузить файлы на сервер
Пример
sftp user@example.com
sftp> cd /var/www/html
sftp> put index.html
sftp> exit
sftp> cd /var/www/html
sftp> put index.html
sftp> exit
Пример 2: Скачать целый каталог (рекурсивно)
Пример
sftp -r user@example.com:/backups /local/backups
Пример 3: Использование пакетного файла
Создайтеsftp_commands.txt:
put file1.txt put file2.txt get report.pdf exit
Выполнить пакет:
Пример
sftp -b sftp_commands.txt user@example.com
Продвинутые советы
1. Используйте подстановочные знаки для передачи нескольких файлов
Пример
sftp> mput *.jpg # Загрузить все файлы jpg
sftp> mget log_*.txt # Скачать все txt-файлы, начинающиеся с log_
sftp> mget log_*.txt # Скачать все txt-файлы, начинающиеся с log_
2. Изменить права доступа к файлу
Пример
sftp> chmod 644 index.html
3. Просмотреть информацию о файле
Пример
sftp> ls -l
4. Используйте символические ссылки
Пример
sftp> symlink /path/to/original /path/to/link
Решения распространённых проблем
1. Соединение отклонено
- Проверьте, запущена ли на сервере служба SSH
- Убедитесь, что порт указан правильно
- Проверьте настройки брандмауэра
2. Ошибка аутентификации
- Убедитесь, что имя пользователя и пароль верны
- Проверьте права доступа к файлу ключа (должно быть 600)
- Убедитесь, что ваш открытый ключ находится на сервере
3. Передача файла прервана
- Проверьте сетевое подключение
- Попробуйте использовать
regetиreputкоманда для возобновления передачи
4. Недостаточно прав
- Проверьте права на запись в удалённом каталоге
- Возможно, вам потребуется использовать
sudo(Но sftp обычно не поддерживает прямой sudo)
Лучшие практики безопасности
- Используйте аутентификацию по ключувместо аутентификации по паролю
- Ограничьте права пользователя, используйте окружение chroot
- Регулярно обновляйтепрограммное обеспечение SSH-сервера
- Отключите вход root, используйте обычного пользователя + sudo
- Отслеживайте файлы журналов(/var/log/auth.log)
Итог
SFTP — важный инструмент для безопасной передачи файлов в системах Linux. Из этого руководства вы должны были освоить:
- Основные понятия и методы подключения SFTP
- Распространённые команды для работы с файлами и передачи файлов
- Практическая пакетная обработка и продвинутые советы
- Решения типичных проблем
- Лучшие практики безопасного использования
Теперь вы можете безопасно и эффективно передавать файлы между своей локальной машиной и удалённым сервером!
Другие расширения
Полный список команд Linux