
Apacheログをダウンロードする必要があるリモートサーバーがあります。
手動でサーバーに行ってファイルをインポートできますが、scp
crontabに入れたいです。自動化する唯一の方法は、ターゲットサーバーのパスワードを含めることですが、私はそうしたくありません。
scp
別のサーバーに行き、ファイルをインポートして別のコンピュータにダウンロードすることをどのように提案しますか?
答え1
サーバー側では、必要な数の公開鍵を承認できます。また、サーバー側の特定のコマンドにキーを制限することもできます。したがって、クライアント側で SSH 鍵ペアを生成し、秘密鍵にパスワードを入力しないでください。認証されたキーのリストに公開キーを追加し、コマンドの制限を追加します。
ssh-keygen -t rsa -f ~/.ssh/apache-logs-download.id_rsa -N ''
ssh-copy-id -i ~/.ssh/apache-logs-download.id_rsa server.example.com:
サーバーで新しく追加された行を編集します。~/.ssh/authorized_keys
(ssh-copy-id
最後に追加されました)forceコマンドディレクティブを追加します。
command="/usr/bin/rrsync -ro /var/log/apache",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
rrsync
SSHを介して特定のディレクトリにのみrsyncを許可するように特別に設計されたrsync用のラッパースクリプト。rrsync
.以外のディレクトリにある場合は、上記のパスを変更してください/usr/bin
。
答え2
クライアントコンピュータに秘密鍵と公開鍵のペアを作成し、公開鍵をリモートコンピュータにコピーすることをお勧めします。
を使用してこれらのキーペアを作成し、ssh-keygen
それをリモートシステムにコピーできますssh-copy-id
。
ログはサーバー上のすべてのユーザーアカウントから読み取ることができます(少なくともマイコンピュータにあります)。したがって、root
クライアントへのルートアクセスはリモートシステムへのルートアクセスを意味し、そのためにサーバーのアカウントを使用しないでください。