GNU/Linux >> Linux の 問題 >  >> Linux

Ssh –保護されたファイルをサーバー間で1行にコピーしますか?

squid.confをコピーしたい あるサーバーから別のサーバーへ。

  • サーバーは相互に通信しません。ワークステーションを調べたいのですが。
  • 両方のサーバーにファイルがあるため、ターゲット上で上書きされます。
  • ファイルには600があります 許可を得て、rootが所有します。
  • sshを介したrootログインが無効になっています(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'

これをワンライナーと呼ぶのは一筋縄ではいかないようです。セットアップガイドの個別の手順に分解するだけだと思います。

承認された回答:

sshをsshでチェーンするよりも、sshをsshでチェーンする方が簡単です。したがって、sshサーバー構成を変更しても問題ありません。各サーバーのルートに対してsshを開くことをお勧めしますが、ローカルホストからのみです。これは、Matchを使用して行うことができます sshd_configの句 :

PermitRootLogin no
Match Host localhost
    PermitRootLogin yes

次に、リモートユーザーからローカルユーザーへ、およびローカルユーザーからrootへのキーベースの認証チェーンを設定できます。まだ認証証跡があるので、ログには誰がrootとしてログインしたかが示され、認証手順はsudoが関与した場合と同じです。

ルートとしてサーバーに接続するには、~/.ssh/configでエイリアスを定義します このように:

Host server-root
HostName server.example.com
User root
ProxyCommand "ssh server.example.com nc %h %p"

sudoの使用を主張する場合 、sudoのように、個別のコマンドが必要になると思います 端末からの読み取りを要求します(アカウントのチケットがある場合でも)¹。通常のファイルコピー方法(scp、sftp、rsync)はいずれも、リモート端末との対話をサポートしていません。

関連:パイプラインのセクションを完全に「パススルー」するように指定する方法は?

sshとsudoに固執することで、提案されたコマンドを単純化することができます。どちらの側でも、パスワードを再度要求しないようにsudoを設定している場合は、一度実行してパスワード要件を克服し、もう1回実行してファイルをコピーできます。 (パスワードプロンプトが邪魔になるため、ファイルを直接簡単にコピーすることはできません。)

ssh -t source 'sudo true'
ssh -t target 'sudo true'
ssh -t source 'sudo cat squid.conf' |
ssh -t target 'sudo tee /etc/squid/squid.conf'

¹NOPASSWDがない場合 、しかしそれならあなたはこれを求めないでしょう。


Linux
  1. SCPとFTPを使用してLinuxのサーバー間でファイルを転送する方法

  2. 1つのSudoで一連のコマンドを実行しますか?

  3. 1000000個の小さなファイルのコピーを高速化しますか?

  1. 2つのファイルを2つの列に印刷しますか?

  2. Makefileで1行の状態チェックイン?

  3. 複数の Web サーバー間でアセットを共有する方法は?

  1. 2つのファイル間の共通行?

  2. 一行FTPサーバー

  3. ファイルを連結してファイル間に改行を挿入する