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

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

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

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

  • Почему я получаю ошибку «Не могу chdir в домашний каталог»
  • SSH Login не работает с помощью клавиши Без пароля?
  • Как установить gnome-terminal для удаления имени сервера, не касаясь PS1?
  • ssh: «Ошибка чтения длины ответа из сокета аутентификации»
  • Как играть в HTTP-поток музыки через SSH?
  • Существует ли канонический метод ограничения доступа ssh к определенным IP-адресам в Unix?
  • Не удалось запустить файл локального скрипта с переменными через ssh
  • используя SSH для подключения к удаленному серверу CentOS 5.6, где Firefox работает на сервере очень медленно
  • 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 - лучшая ОС в мире.