squid.conf
あるサーバーから別のサーバーにコピーしたいと思います。
- サーバーは互いに通信しません。ワークステーションを通過したいのですが。
- 両方のサーバーにファイルがあるため、ターゲット上で上書きされます。
- ファイルには
600
権限があり、rootが所有しています。 - sshを介したルートログインは無効です(
PermitRootLogin no
)。 - セットアップガイドの一部になるため、可能であれば1行で行いたいと思います。
することを知っている
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'
これをワンライナーと呼ぶのは一見ストレッチのようです。セットアップガイドで別の手順に分割するだけだと思います。