Раньше я думал, что SCP - это инструмент для копирования файлов по SSH, а копирование файлов по SSH называется SFTP, что само по себе является синонимом FISH.
Но теперь, когда я искал плагин Total Commander для этого в Windows, я заметил, что на его странице написано: «Разрешает доступ к удаленным серверам через безопасный FTP (FTP через SSH). Требуется SSH2. Это НЕ то же самое». как SCP! ».
Если это не то же самое, тогда что я неправильно понимаю?
ssh
scp
sftp
fish-protocol
Иван
источник
источник
Ответы:
SFTP - это не протокол FTP через ssh, а расширение протокола SSH, включенного в SSH2 (и некоторые реализации SSH1). SFTP - это протокол передачи файлов, похожий на FTP, но использующий протокол SSH в качестве сетевого протокола (и выигрыш от использования SSH для обработки аутентификации и шифрования).
SCP предназначен только для передачи файлов и не может выполнять другие действия, такие как создание списка удаленных каталогов или удаление файлов, что делает SFTP.
FISH представляется еще одним протоколом, который может использовать SSH или RSH для передачи файлов.
источник
Протокол SSH создает безопасный туннель, через который вы можете передавать двунаправленный поток, и вы можете использовать этот поток для соединения любых двух процессов, которые вам нравятся.
Наиболее знакомые два процесса - это оболочка (на сервере) и эмулятор интерактивного терминала (на клиенте). Это то, что вы используете, когда вы подключаетесь к серверу и вводите команды в командной строке удаленной оболочки.
SCP - это передача файлов с использованием только этой оболочки и удаленной команды. В SCP, когда клиент подключен к серверу и все аутентификации и авторизации выполнены, клиент отправляет удаленной оболочке команду, подобную
scp -f myfile.txt
которой просто записывает содержимое файла myfile.txt в поток (для клиента читать) илиscp -t myfile.txt
который читает из потока и пишет в myfile.txt.Вы заметите, что -f и -t (для "from" и "to") не находятся в man-страницах scp. Они считаются внутренними. Существует упрощенная схема подтверждения и схема для передачи каталогов путем обертывания содержимого файла в простые заголовки. Но по большей части SCP - это основной вопрос записи байтов файла в туннель SSH, позволяющий SSH иметь дело со сложными вещами, такими как сжатие и целостность.
SFTP - намного более сложный протокол передачи файлов, который снова туннелируется через SSH.
В SFTP и запросы, и ответы представляют собой двоично-кодированные пакеты с именами, такими как «SSH_FXP_OPEN», «SSH_FXP_STAT», «SSH_FXP_READ», «SSH_FXP_DATA», «SSH_FXP_CLOSE».
Одна интересная особенность протокола заключается в том, что команды могут передаваться по конвейеру, а ответы могут приходить в любом порядке. Это может означать, что сеансы тратят меньше времени на ожидание ответов, и есть возможности оптимизировать одновременные передачи с одного сервера с источниками данных различной скорости - хотя я не знаю, в какой степени эти возможности были использованы.
SFTP имеет команды для выполнения многих вещей, которые SCP не рассматривает; например, удаление, переименование, усечение, перемещение и т. д.
Все подробности доступны в проекте IETF .
Стоит отметить, что более новые пакеты SSH заменяют
scp
двоичный файл пользователя символической ссылкой на двоичный файл SFTP. Этот SFTP имеет внешний вид scp, но под прикрытием он использует протокол SFTP.Рыба - интересная часть истории. Допустим, вы хотите передавать файлы по SSH, но ваша удаленная система не имеет SCP. Или, возможно, вы хотите выполнять более сложные файловые операции, чем SCP, но ваша удаленная система не имеет SFTP. Ни один из тех сценариев не вероятен сегодня, но когда Рыба была изобретена, они были.
Поэтому разработчики клиента Midnight Commander приступили к созданию собственного решения. Это похоже на scp в принципе, но есть больше команд. Клиент отправляет команды, которые выглядят так:
Если вы разговариваете с рыбным сервером, он интерпретирует
#RETR
команду. Однако если на удаленном сервере не установлен сервер Fish, команды будут интерпретироваться оболочкой. Сначала комментарий, затем команда, которая печатает информацию о файле, а затем содержимое файла, заключенное в некоторые маркеры.Фактически, в отсутствие scp или fish клиент «свернул» свой собственный scp-эквивалент, но он также может отправлять команды оболочки для переименования, перемещения, усечения и т. Д.
Подробная информация о рыбе находится в источнике Midnight Commander здесь .
Что это все означает с точки зрения конечного пользователя?
источник
Проще говоря:
источник
sftp
иscp
требует специальных программ на стороне сервера, в отличие от FISH, который использует только базовые возможности Unix в удаленной оболочке.scp
для scp или sftp-server). И вы в самом деле случаи , когда удаленная сторона является «ограниченным» Unix, где вы не можете установить то , что вы хотите: для передачи файлов на Android через SSH (по Wi - Fi), я написал множество rpush-кошачьи скриптов - возможно, клиент FISH будет работать. (tramp-fish.el
в Emacs тоже может: обычный клиент TRAMP не работал, потому чтоstat
его не было на Android.)scp
это также необходимо на стороне сервера, в дополнение к стороне клиента? При быстром поиске в Google я не смог найти ничего, что подтверждает то, чтоscp
также необходимо на стороне сервера.FISH и SFTP похожи, и, как видно, обе они работают по SSH, SFTP требует специальной поддержки и конфигурации на SSH-сервере для облегчения передачи, но он немного более безопасен и позволяет SysAdmins разрешать только SFTP (в этих ситуациях FISH выиграл не работает).
FISH требуется оболочка (например, sh / rsh) для копирования, и, следовательно, требуется полный SSH-доступ к машине, я бы подумал, что это будет сложнее защитить (я не могу комментировать это объективно, как мне никогда не приходилось).
Где возможно, я бы порекомендовал SFTP, scp, FISH (в таком порядке).
Wikipedia FISH Статья
источник
scp
для scp или sftp-server). И вы в самом деле случаи , когда удаленная сторона является «ограниченным» Unix, где вы не можете установить то , что вы хотите: для передачи файлов на Android через SSH (по Wi - Fi), я написал множество rpush-кошачьи скриптов - возможно, клиент FISH будет работать. (tramp-fish.el
в Emacs тоже могли: обычный клиент TRAMP не работал, потому чтоstat
не было на Android.)