Невозможно подключиться к серверу через SSH через Apache - PullRequest
0 голосов
/ 22 ноября 2018

Я столкнулся с проблемой подключения к серверу через SSH.

У меня есть сервер A и B. С сервера AI запустите скрипт .sh, который анализирует журнал на сервере A, затем подключается к серверу B и выполняет ту же задачу.В консоли все работает нормально, но не с веб-интерфейсом.

Я подключаюсь к серверу, используя cgi с apache2.Когда я запускаю скрипт на сервере A, он анализирует журнал и возвращает результат, однако ему не удается подключиться к серверу B.

Вот журнал httpd:

[Thu Nov 22 14:09:34 2018] [error] [client 10.1.68.243] Permission denied, please try again.\r, referer: http://cab-prod-comp-sd/cgi-bin/example-bash.sh?val_x=RDWH.&val_z=1

скрипт сервера A:

-rwsrwxr-x 1 sas sas 2217 Nov 22 11:25 /sas/oljas_scripts/find_usage_of_tables.sh

сценарий сервера B:

-rwxrwxr-x 1 sas      sas    1202 Nov 19 09:16 find_usage_of_tables.sh

часть, где я подключаюсь к серверу B:

SAS_RESULTS=$(ssh sas@sas-p1l-comp /sas/oljas_scripts/find_usage_of_tables.sh $table_name)

Ценю любую помощь.Спасибо!

РЕДАКТИРОВАТЬ:

Нужно ли дать разрешение пользователю Apache?Как это сделать?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Спасибо всем!Проблема решена путем запуска сервера Apache от пользователя SAS.

0 голосов
/ 22 ноября 2018

Это то, что я предполагаю из вашего вопроса:

  • Система A запускает httpd с пользователем "apache".
  • В системе B есть пользователь с именем "sas".
  • вы хотите, чтобы пользователь «apache» подключался к системе B, используя пользователя «sas».
  • в вашем коде подключения не указано ни пароля, ни пароля.Вы также не упомянули агента ssh, поэтому соединение ssh выполняется с помощью ключей ssh.
  • sshd в системе B настроен на разрешение соединений без паролей (т. Е. Используется аутентификация по ключу).Из приведенных выше комментариев смотрите следующее: https://superuser.com/questions/543626/ssh-permission-denied-on-correct-password-authentication, ответ Джона Сиу.

В системе A пользователь "apache":

  • , если его еще нетв ~ / .ssh вы должны установить закрытый и открытый ключ ssh (ssh-keygen, проверка в Интернете, хорошо документировано).

В системе B пользователь "sas":

  • пользователь "sas", в ~ / .ssh, создайте (если требуется) файл с именем authorized_keys.
  • в этом файле, поместите открытый ключ "apache«пользователь из системы A.
  • это позволит пользователю« apache »в системе A подключаться к системе B с пользователем« sas ».

Соединить ловушки, чтобы избежать в системеB

  • убедитесь, что разрешения для пользователя "sas", ~ / .ssh - 700.
  • разрешения для пользователя "sas", ~ / .ssh / authorized_keys - 600.
  • разрешений для пользователя "sas", ~ 700. Здесь я имею в виду домашний каталог для "sas".Ex.~ для "sas" это / home / sas, тогда если вы ls -al /home, вы должны увидеть каталог sas с 700.

Для отладки вы можете сделать ssh -v -v -v sas@sas-p1l-comp.


На ваш вопрос о known_hosts, в системе A, когда он впервые подключается к системе B, если он не находит систему B в файле, ssh добавит его для вас.НО вы должны сделать это хотя бы один раз вручную.Клиент ssh попросит вас подтвердить добавление, и это можно сделать только в командной строке.Веб-интерфейс не будет отвечать клиенту.Так что подключитесь один раз вручную, и тогда все будет в порядке.


Пока это не работает, нет смысла пытаться настроить httpd в системе A. Сначала это должно работать в командной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...