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

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

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

  • контролировать и смотреть несколько систем непрерывно
  • Как заблокировать SSH Brute Force через Iptables и как это работает?
  • Как использовать ssh-agent с несколькими (действительными) ключами и все же выбрать, какой из них использовать?
  • Скопируйте открытый ключ ssh на несколько хостов Linux
  • Перемещение нескольких портов ssh
  • как требовать sudo для просмотра файлов?
  • Что бы вы рекомендовали scp на другой сервер, получить файлы и загрузить их на другой компьютер?

  • Сценарий запуска systemd postgresql
  • как выполнять команды на удаленном сервере как разные пользователи
  • Отключить логин пользователя без отключения учетной записи.
  • Поиск метода rsync + ssh в качестве альтернативы Dropbox
  • Как предотвратить процесс записи файлов
  • Как эффективно использовать экран и SSH?
  • 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 - лучшая ОС в мире.