как запустить передачу sftp через консоль

0

Мне нужно переместить 5 гигабайт файлов с одного удаленного хоста на другой удаленный хост, что не делает команду scp доступной через консоль. Поэтому я обдумываю любые другие варианты, кроме первой загрузки файлов на мой локальный компьютер, только для того, чтобы повторно загрузить их на конечный сервер.

Целевой сервер использует sftp. Можно ли запустить загрузку sftp на целевой сервер через консоль ssh?

Если да, то каковы схемы команд?

pixeline
источник
Пожалуйста, подтвердите это: вы хотите переместить файлы с boxA на boxB, но вы должны сделать это с boxC, правильно? Я предполагаю, что вы можете войти через ssh в любой из ящиков, да?
Джим Макнамара
да для всех. Проблема в том, что boxC имеет очень мало доступных команд для удаленной передачи. по крайней мере, нет scp Поэтому я смотрю на альтернативные варианты.
pixeline
Хороший. Последний вопрос: ssh-ключи установлены на всех трех коробках? Если да, это упростит процесс смешивания всей передачи ssh | tar.
Джим Макнамара
не имеют ни малейшего представления. извините, я только учусь, как я иду сюда с SSH. Я помню, что должен был принимать ключи при первом подключении sftp, которое работало. Может быть, вы можете уточнить метод передачи ssh | tar? Я проверю это и сообщу.
пиксель

Ответы:

0

Ключи SSH означают, что как пользователь, скажем, pixeline, когда вы входите в систему на сервере C, когда вы набираете

ssh serverA

Он соединяет вас напрямую с запросом пароля.

Если есть ключи, то это должно работать для вас

#copy from serverA to serverB from serverC - you are logged to serverC
   ssh pixeline@serverA  'cat /path/to/filename | ssh pixeline@serverB "cat > /path/to/remotefilename " '

Это не будет хорошо работать без открытых ключей SSH - это шаг за шагом, как: http://rcsg-gsir.imsb-dsgi.nrc-cnrc.gc.ca/documents/internet/node31.html

ПРИМЕЧАНИЕ: ваш домашний каталог должен иметь защиту не менее 755, а каталог .ssh в домашнем каталоге должен быть 700. На всех 3 серверах.

Веселитесь ... Вы ДОЛЖНЫ заставить это работать, и если вы хотите сделать все файлы за один раз, мы можем попробовать tar.

Джим Макнамара
источник
0

Если все серверы основаны на Linux или Unix, вы можете использовать rsync, так как это будет самый быстрый способ завершить его.

icebox3d
источник
0

Если sftp доступен на удаленном сервере, команда для его вызова будет (барабанная дробь, пожалуйста):

sftp

Он работает так же, как почти любая другая программа CLI FTP. Объяснение всего, что вы можете с ним сделать, является немного большим для ответа суперпользователя, поэтому просто прочитайте его справочную страницу.

Теперь было бы немного необычно, если бы система была настроена так, чтобы запретить scp, но разрешить sftp. Не то чтобы его нельзя было настроить таким образом, но большинство администраторов блокируют один блок другим.

Если вы оказались в этой лодке, вы можете использовать тот факт, что ssh позволяет вам выполнять удаленные команды через любую программу архивирования или копирования, которая будет работать с stdin и stdout. Например:

tar -c <files or directories to archive> | ssh user@host tar -x

или же

dd if=file.to.transfer | ssh user@host dd of=destination.file

Это работает, потому что, если эти программы не имеют указанного файла, они по умолчанию используют stdin или stdout в зависимости от ситуации. Таким образом, вы создаете архив или извлекаете файл и выводите результат в stdout, а затем передаете этот stdout в stdin из ssh, который запускает программу, которая преобразует его обратно в нужные вам файлы.

В зависимости от условий вашей сети и характеристик файла, вы можете захотеть вызывать части sftp или ssh этих команд с -C, чтобы сжать трафик, чтобы это не заняло много времени.

Perkins
источник