Shell Script – как scp на удаленный сервер и загружать файлы и защищать пароль

У меня есть удаленный сервер, с которого мне нужно загрузить журналы Apache.

Я могу вручную scp на сервер и получить файлы, но я хотел бы положить это в crontab. Единственный способ автоматизировать его – включить пароль целевого сервера, который я бы предпочел не делать.

Что бы вы рекомендовали scp на другой сервер, получить файлы и загрузить их на другой компьютер?

  • Целое число после имени пользователя в клиенте OpenSSH, разделенное двоеточием
  • Как работает «Формат заголовка удаленной вкладки» в Konsole?
  • Преобразуйте ключ Amazon .pem в Putty .ppk key Linux
  • Прозрачное проксирование TCP-соединений на порту (в основном, без доступа root)
  • Как настроить пароль без ssh с ключами RSA
  • Почему моя панель инструментов Emacs отличается от ssh w / X forwarding на Cygwin vs CentOS?
  • Разрешать только внутренние пароли ssh, всегда разрешать внешние ssh-логины с ключом
  • проблема с паролем при подаче удаленного файла в diff
  • 2 Solutions collect form web for “Shell Script – как scp на удаленный сервер и загружать файлы и защищать пароль”

    Я бы рекомендовал создать пару частного / открытого ключа на клиентской машине и скопировать открытый ключ на удаленную машину.

    Вы можете создать такую ​​пару ключей с помощью ssh-keygen и скопировать ее на удаленную машину с помощью ssh-copy-id .

    Журналы, вероятно, читаются всеми учетными записями пользователей на сервере (по крайней мере, они находятся на моей машине). Поэтому для этого не следует использовать root учетную запись на сервере, поскольку доступ root к вашему клиенту будет означать доступ root к удаленному компьютеру.

    Вы можете разрешить столько открытых ключей, сколько хотите на стороне сервера. Кроме того, вы можете ограничить ключ определенной командой на стороне сервера. Поэтому создайте пару ключей 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 вставляет ее в конец) и добавьте директиву принудительной команды:

     command="/usr/bin/rrsync -ro /var/log/apache",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA… 

    rrsync – это сценарий оболочки вокруг rsync, который специально разработан для разрешения rsync через SSH только в определенном каталоге или из него. Измените путь выше, если rrsync находится в каталоге, отличном от /usr/bin .

    Linux и Unix - лучшая ОС в мире.