Я хотел бы скопировать squid.conf
с одного сервера на другой.
- Серверы не общаются друг с другом. Я хотел бы пройти через мою рабочую станцию.
- Файл есть на обоих серверах, поэтому он будет перезаписан на цели.
- Файлы имеют
600
разрешение и принадлежат пользователю root. - вход в систему через ssh отключен (
PermitRootLogin no
). - Я хотел бы сделать это в одну строку, если это возможно, так как это будет частью руководства по установке.
Я знаю, чтобы сделать
ssh source 'tar czpf - -C /etc/squid/ squid.conf' | \
ssh target 'tar xzpf - -C /etc/squid/'
копировать файлы между серверами и сохранять разрешения. Однако в этом случае я получу «Отказано в доступе».
Я также знаю, что могу сделать это:
ssh -t source 'sudo cat /etc/squid/squid.conf'
Таким образом, -t
sudo может запрашивать пароль администратора перед выводом содержимого файла.
Проблема в том, что я не знаю, как объединить эти методы в то, что будет запрашивать пароль sudo на каждом сервере, и передавать файл по назначению. Это возможно?
ОБНОВЛЕНИЕ : Вот лучшее, что я мог придумать:
ssh -t source 'sudo tar czf /tmp/squid.tgz -C /etc/squid squid.conf' && \
ssh source 'cat /tmp/squid.tgz' | \
ssh target 'cat >/tmp/squid.tgz' && \
ssh -t source 'sudo rm /tmp/squid.tgz' && \
ssh -t target \
'sudo tar xzf /tmp/squid.tgz -C /etc/squid && sudo rm /tmp/squid.tgz'
Назвать это одной строкой кажется натяжкой. Я думаю, что я просто разбью его на отдельные шаги в руководстве по установке.