Что касается перенаправления, я бы предположил, что это (перенаправление) реализуется оболочкой, заменяющей стандартный ввод (ввод для < ввод) и стандартный вывод (выводом для> вывода) с использованием dup2 () -
Для pipe системный вызов pipe (2) используется аналогичным образом - он имеет конец чтения и записи. Каждая команда, подключенная через канал, будет считываться с одного конца канала и записываться на другой конец. stdin, stdout заменит соответствующий конец канала для этой команды.
SSH устанавливает безопасный канал между клиент и сервер. Это означает, что любое повреждение файла (случайное или вредоносное) будет обнаружено. Ничего особенного делать не нужно! Единственное, что вам нужно сделать, это проверить, что возвращаемое значение команды scp
или sftp
равно 0, что означает успех.
Если scp
или sftp
указывает на успех, то файл был передан успешно. Любая проверка, которую вы могли бы выполнить с помощью вычисления хэша, была бы излишней.
Параметр MAC
определяет, какой MAC SSH использует как часть своего протокола безопасного канала. Крайне редко возникает необходимость изменять этот параметр: клиент и сервер согласовывают алгоритм, который они оба поддерживают.
Подводя итог: вы можете заменить вычисление и проверку хэшей, проверив статус возврата scp
или sftp
.
Давайте посмотрим, что написано на странице руководства:
MACs Specifies the MAC (message authentication code) algorithms in
order of preference. The MAC algorithm is used in protocol ver-
sion 2 for data integrity protection. Multiple algorithms must
be comma-separated. The default is:
hmac-md5,hmac-sha1,umac-64@openssh.com,
hmac-ripemd160,hmac-sha1-96,hmac-md5-96,
hmac-sha2-256,hmac-sha2-512
Что-то вроде этого должно подтвердить, что данные не были изменены при копировании:
scp -2 -o MACs=hmac-ripemd160 set@host.example.com:some.file .
С точки зрения криптографической стойкости ripemd160 - один из немногих криптографических хэшей 1990-х годов, который все еще безопасно. (Википедия ошибочно утверждает, что она уязвима для атаки со сложностью 2 ^ 51, но на самом деле уязвим только ослабленный вариант ripemd160)