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

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

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

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

  • Как настроить ssh-сервер для mac с пользовательским ip из github?
  • SSH запрашивает парольную фразу для открытого ключа без набора фреймов
  • Интересное поведение защищенной копии
  • Rsync только новые файлы с удаленного сервера
  • Поддерживает ли Gnome Keyring ключи OpenSSH нового формата?
  • Является ли ssh-agent хранить мою кодовую фразу?
  • Обратный SSH-туннель
  • Почему ssh -g говорит, что адрес уже используется?
  • 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 .

    Interesting Posts

    Vim: Обратный справа налево

    Установка / установка Fedora

    Посмотрите, сколько памяти было зарезервировано с помощью malloc () процессом в Linux

    Переход на несколько жестких дисков с двойной загрузкой

    Java-процесс, swap (/ proc Solaris10) память, очень используемая

    Почему find иногда соответствует аргументу пути к командной строке?

    Влияние параметра vm.swappines на систему без раздела подкачки

    Как синхронизировать все настройки Gnome / Unity на нескольких компьютерах?

    Предупреждение! Корневой диск не существует после элементарной установки

    Не удается открыть графические редакторы в режиме суперпользователя

    Разделить PDF на цветные и черно-белые страницы

    Запись источника монитора (выходной микс) другого компьютера с использованием PulseAudio

    show вводит новый пароль в команде unix "passwd"

    Монтирование / dev / sda3, но / etc / fstab не найдено?

    скрипт bash, определяющий последнюю переменную пути

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