Изменение пользователя на root при подключении к серверу linux и копирование файлов

Мой скрипт закодирован таким образом, который не позволяет вам напрямую подключаться к серверу с помощью root. Этот код в основном копирует файлы на сервер на мой компьютер, и он работает, но у меня нет доступа ко многим файлам, потому что доступ к ним может получить только root. Как я могу подключиться к серверу в качестве пользователя, а затем скопировать его файлы, переключившись на root?

Код, который я хочу изменить:

sshpass -p "password" scp -q -r username@74.11.11.11:some_directory copy_it/here/ 

Другими словами, я хочу иметь возможность удаленно копировать файлы, которые доступны только для root на удаленном сервере, но не хотят обращаться к удаленному серверу через ssh / scp напрямую с правами root.

Возможно ли это только через ssh и не sshpass?

2 Solutions collect form web for “Изменение пользователя на root при подключении к серверу linux и копирование файлов”

Вам лучше использовать ключи (а не пароль) для автоматизации удаленного входа.

Если вы хотите получить доступ root, вам понадобится «su» без пароля или лучше сконфигурируйте «sudo», чтобы иметь возможность выполнять команды с пользователем root.

Затем вы можете использовать «ssh» (не scp) для входа и выполнения команд на удаленном сервере. Вы можете использовать tar / lszrz / whatever для передачи файлов.

Как это:

ssh remote.server.com sudo tar fc - /path/on/the/remote/server | tar fx -

Это должно скопировать / path / on / the / remote / server в ваш текущий каталог.

EDIT: Имейте в виду, что разрешение вашего пользователя на sudo tar не является безопасным.

поэтому подход будет заключаться в том, чтобы удаленно выполнять команды, которые копируют файлы через sudo на / tmp на удаленном компьютере, меняют владельца на подключенного пользователя, а затем дистанционно копируют их из / tmp:

  ssh username@74.11.11.11 "sudo cp -R some_directory /tmp" ssh username@74.11.11.11 "sudo chown -R username:username /tmp/some_directory" scp -q -r username@74.11.11.11:/tmp/some_directory copy_it/here/ ssh username@74.11.11.11 "rm -r /tmp/some_directory" 
  • Заголовок сценария Init не разрешает зависимость
  • Как установить mplayer с терминала?
  • Подключите две виртуальные машины VirtualBox через SSH
  • Как установить jdk на SUSE Linux с возможностью?
  • изменения в членстве в группе домена, не отображаемые для пользователя в SLES 11 SP3
  • openSUSE: переключение с Wicked на NetworkManager с помощью командной строки
  • Почему нет других дистрибутивов / спинов на базе openSuSE?
  • Suse-эквивалент Solaris ls -V
  • Исходный код драйвера ATA_PIIX
  • Что означает «i» и «v» на выходе zypper?
  • настройка или изменение IP-адреса по умолчанию
  • Linux и Unix - лучшая ОС в мире.