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

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

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

3 ответа3

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, так как это будет самый быстрый способ завершить его.

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, чтобы сжать трафик, чтобы он не занимал много времени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .