Ответ 1
echo "hello" | ssh [email protected] "cat - > /tmp/file"
Я просто прочитал файл, запустил его в SSH и написал на сервере SSHHost в файле/tmp/.
В протоколе ssh существует ли механизм передачи файлов?
Im работает над существующей базой кода, которая уже имеет код службы ssh. Теперь мне нужно передать файлы через ssh-соединение. Если протокол ssh уже поддерживает его, мне не нужно интегрировать в него материалы scp.
Спасибо.
Edit:
Я использую код C, ssh на основе openssh.
Мне нужно перенести файл на программирование, не используя внешнюю программу/команду из-за некоторых ограничений. Программа должна передавать любой файл размера на удаленном хост-блоке и обрабатывать кусок на лету. Затем данные куска отбрасываются.
echo "hello" | ssh [email protected] "cat - > /tmp/file"
Я просто прочитал файл, запустил его в SSH и написал на сервере SSHHost в файле/tmp/.
sftp и scp представляют собой существующие "безопасные" способы передачи файлов, но ваши ответы будут зависеть от того, какой технологический стек вы используете для своего приложения. Вы не упоминаете, используете ли вы С#, PHP или другой язык или какую машину запускаете приложение. Эти вещи будут иметь большое значение для ответов, которые вы получите.
Путь старой школы - это "tar-to-tar", который отлично справляется с копированием и сохранением разрешений. Это в значительной степени будет заменено использованием rsync, когда обе стороны имеют rsync.
ssh [email protected] "cd mydir && tar cfp - mysubdir" | tar xvfp -
Будьте осторожны с разреженными файлами и т.д., когда вы это сделаете. Большинство тар имеют возможность сохранять файлы в ходе такого рода процессов.
Попробуйте найти SFTP.
Изменить: Вы также можете найти эту статью, полезную для запуска rsunc по ssh.
Rsync может помочь:
rsync [email protected]:filename remotefilename
To download: remote -> local
scp [email protected]_host:remote_file local_file
To upload: local -> remote
scp local_file [email protected]_host:remote_file
Для нескольких файлов включите -r
после scp.