Intereting Posts
Как остановить второй xsession на дисплее: 1 stunnel – как настроить stunnel для обработки ssl и подключить к нему http? Скопируйте контент из файлов X и Y, чтобы создать файл XY, но XY-контент – все строчные буквы Как удалить лишний «мусор» из этого файла журнала? Ссылка 2 существующих файла Перемещение списка файлов путем сопоставления их с целевым индексом Что означает «Debian-10» в ответе сервера ssh «SSH-2.0-OpenSSH_7.4p1 Debian-10 + deb9u1» означает? почему мы не можем установить приложение, скомпилированное для Ubuntu, на Linux mint или некоторые другие дистрибутивы с одним ядром? Отменить переменную окружения http_proxy Обновление ядра Linux сломало мой компьютер Как перенаправить весь трафик wlan0 на eth0 в Ubuntu? Ошибка перехвата «команда не найдена» в zsh Почему процесс, выполняемый оболочкой, не наследует идентификатор группы процессов оболочки? Предоставление пользователям временного доступа к моему серверу для запуска команды «Vmware-installer: команда не найдена» при попытке удалить VMware Player

Изменение пользователя на 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?

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

Если вы хотите получить доступ 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"