У меня есть файл на сервере A (который находится за NAT, поэтому не имеет прямой адресации). Файл необходимо скопировать на сервер B в каталог, ограниченный root. У меня есть учетная запись на сервере B с привилегиями sudo. Каков синтаксис команды scp?
65
Ответы:
Во-первых, вам нужно скопировать файл в место, где у вас есть доступ для записи без sudo,
Затем переместите файл с помощью sudo
Если у вас нет места для записи, создайте временный каталог с разрешением на запись для вашего пользователя.
источник
chmod 777
обычно является неправильным способом сделать это. Подумайте, что может произойти, если кто-то еще вошел в систему и знал, что вы собираетесь запустить этот код.ssh sudo
у меня не работает - жалуется "нет tty настоящего и не задана программа askpass"?serverb
либо вам нужноssh serverb
отдельно, а затем запуститьsudo ...
после входа в систему.С SCP вы должны сделать это в два шага, однако вы можете сделать это в одном с rsync следующим образом:
Примечание. Для этого требуется
NOPASSWD
настройка sudo. Если вам нужно ввести пароль для sudo, то необходимо выполнить два шага.Чтобы скопировать каталог, вам нужно добавить
-r
параметр. И-v
для подробного вывода.Чтобы использовать вышеуказанный метод с учетными данными, вам нужно добавить их в свой
~/.ssh/config
файл, напримеристочник
sudo: sorry, you must have a tty to run sudo
исправлена-e "ssh -tt"
.-e "ssh -tt"
, я получаюprotocol version mismatch -- is your shell clean?
. Любые советы о том, как это исправить?Вы можете использовать ssh и tar, чтобы обойти это:
Сначала обновляется ваша временная метка sudo (при необходимости запрашивается пароль, для которого требуется tty (
ssh -t
)), а затем используется sudo для удаленного создания архива и его извлечения локально.«tar» в RedHat 5 требует, чтобы параметры «--preserve» шли после команды «xpsf -».
источник
tar: Invalid replacement string
, удаление-s
в, кажется, это исправить (не уверен, что вам нужноs
для в любом случае). Большое спасибо; это круто.tty_tickets
бы быть отключенным, правильно?Вы можете использовать sftp с командой sudo, например:
источник
Если вам нужно каждый раз вводить пароль для sudo, вы можете сохранить его в файл:
а затем отправьте его вместе с исходным файлом.
Вы можете использовать
tee
вместо,sponge
если у вас нет moreutils.источник
Во-первых, вам нужно скопировать файл в место, где у вас есть доступ для записи без sudo. Вы можете сделать следующие два шага.
Шаг 1:
scp filename newserver
Шаг 2:
ssh newserver sudo mv filename /path/to/the/destination
для получения дополнительной информации прочитайте учебник scp
источник
Он скопирует определенный файл из источника в / tmp / на текущем сервере
источник