2

Я знаю, что могу использовать sftp user @ host ....

Но я хочу загрузить файл из существующего сеанса.

то есть.

ssh user @ host ... поработай ...

Основная проблема, с которой я столкнулся, заключается в том, что указанный файл находится на сервере под root, поэтому выполнить команду sftp не так просто.

5 ответов5

4

То, как вы описываете это, звучит так, как будто ваша проблема в том, что вы не можете войти в систему как root через ssh (возможно, вы использовали какой-то тип su или sudo для работы в качестве root).

  • Если root в принципе может войти в систему через ssh, но вы не знаете пароль, вы можете настроить учетную запись root, чтобы разрешить аутентификацию с открытым ключом с помощью вашего ключа.
  • Если это невозможно, скопируйте этот файл в папку, доступную для учетной записи, в которую вы входите (например, в папку $HOME ), возможно, отрегулируйте разрешения и скопируйте как пользователь с помощью sftp или scp .
1

Я не знаю, почему это должен быть один и тот же сеанс, но если вы используете ControlMaster и ControlPath в вашем ~/.ssh/config, вам не нужно авторизовывать ваше соединение scp, так как оно мультиплексируется в одном соединении. Это также ускоряет ваше соединение с тем же хостом.

Посмотрите на http://www.linux.com/archive/feed/54498 о том, как его настроить.

1

Вы пробовали scp? Например:

scp user@host:/path/to/remote-file .
0

Я бы сделал так, как вы просите, чтобы включить ведение журнала сеанса на вашем ssh-клиенте (Способы сделать это различаются. В зависимости от файла вам может потребоваться просто установить большой буфер прокрутки.), А затем base64 закодировать файл и скопировать его на ваш терминал. :D

Затем вы можете обрезать посторонние биты с любого конца журнала и Base64 декодировать его обратно в исходный файл.

Например:

base64 < file.to.transfer

И затем, на стороне клиента:

base64 -d < trimmed.log.file > destination.file

Некоторые клиентские программы имеют встроенные методы для выполнения почти одинаковых действий, например, с протоколом XMODEM или аналогичным, но доступность программного обеспечения для передачи на стороне сервера, вероятно, будет намного меньше, чем для base64, который включен в большинство дистрибутивов Linux, которые я использовал недавно. Если у вас есть клиент, который поддерживает его, он позаботится о фазе прерывания и декодирования автоматически, что может быть удобно для больших файлов. Я не знаю, что кто-то действительно использовал это со времен TELNET BBS, так что удачи.

0

Вы не можете скачать "через" существующий сеанс.

scp и sftp работают, создавая новые сессии и общаясь с исполняемым файлом на другом конце, который работает вместо оболочки.

Основная проблема, с которой я столкнулся, заключается в том, что указанный файл находится на сервере под root, поэтому выполнить команду sftp не так просто.

Вы вошли на удаленный сервер. Я предполагаю, что вы можете получить доступ к этому файлу под своей учетной записью без полномочий root. Итак, scp должен работать. Пользователь, scp может получить доступ ко всему, как если бы вы вошли в систему.

Если вам нужно sudo или su чтобы получить доступ к этому файлу в удаленной системе, то вам нужно скопировать его в домашний каталог обычного пользователя, chmod чтобы ваш обычный пользователь владел им и мог его прочитать, а затем получить его с помощью scp , и т.п. Если файл очень большой, временно chmod файл напрямую, не создавая копию.

Еще одна вещь, которую вы можете попробовать - если вы используете свой собственный SSH-сервер дома или где-либо еще, и он доступен с удаленного SSH-сервера, на котором вы вошли, вы можете использовать scp для отправки его из удаленного сеанса в локальную систему.

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