Мне нужно скопировать файл между машинами Linux. Проблема, которую пользователь использует для входа в систему ( myuser
), отличается от пользователя, который может получить доступ к файлу.
Если я просто ssh
на машине, я могу переключить пользователя с помощью sudo su someuser
, могу ли я сделать это как-нибудь, пока scp
?
При использовании WinSCP мне удалось это сделать, настроив SCP / Shell, поэтому я считаю, что должен быть похожий способ сделать это с помощью чистой оболочки.
ssh
и выполненияscp
, что-то вроде этогоssh myuser@host "sudo scp ..."
:?Ответы:
Предполагая, что пользователю, которому вы можете использовать ssh, не нужен пароль для sudo su для целевого пользователя, вы можете попробовать это:
... Имейте в виду, я все еще не убежден, что простая настройка
targetuser
для разрешения только scp / sftp / rsync через SSH и использование пары ключей RSA для аутентификации не намного лучший вариант.источник
tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"
за кучу файлов-z
или-j
полезны в зависимости от скорости подключения и компьютерной техники с обеих сторон ...Если вы знаете учетные данные другого пользователя (
someuser
), вы можете просто указать его приscp
вызове.Со
man scp
страницы:Вот используемый синтаксис:
пример
Вы хотите скопировать файл
/home/foo/bar
сhost1
вашего локального хоста, используя пользователяsomeuser
, вот команда:Вам будет предложено для аутентификации (пароль, ключи, ...).
источник
Возможно, это возможно , но я бы сказал, что это очень неловкий путь.
Мое первое предложение - войти в систему под этим пользователем. Даже если у вас нет пароля этого пользователя, вы можете добавить свой собственный открытый ключ ssh к его авторизованным ключам и затем запустить scp, используя их ключ, как показывает rahmu.
Если это невозможно, мое второе предложение состоит в том, чтобы войти в систему с помощью ssh, sudo для пользователя и создать tar-файл из файлов, которые вы хотите скопировать, и поместить его куда-нибудь, чтобы ваш собственный пользователь мог прочитать. Затем найдите этот tarfile.
источник
использовать
-S
поscp
команденапример, /superuser/87597/how-to-perform-scp-as-a-sudo-user
это позволит вам выполнить скрипт, как я полагаю, вы делали с использованием сценария использования winscp.
источник
Я попытался привести несколько примеров в следующей статье. Основная идея - не использовать scp, а использовать dd и ssh с переключателем пользователя sudo. Посмотрите:
http://hmmss.wordpress.com/2014/07/02/ssh-and-scp-with-another-user
источник