我想squid.conf
从一台服务器复制到另一台服务器。
- 服务器之间不互相通信。我想通过我的工作站。
- 两个服务器都有该文件,因此它将在目标上被覆盖。
- 这些文件具有
600
权限,并由root拥有。 - 通过ssh的root登录已禁用(
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'
称其为单线似乎有点困难。我想我会将其分解为安装指南中的单独步骤。