Я пытаюсь развернуть исполняемый файл и запустить его на удаленной машине Unix (Linux/Solaris) из Linux, не вводя пароль вручную.

Я попробовал scp, а также утилиту SSH key-gen для взаимодействия с удаленным сервером, но в любом случае я не мог избежать ввода пароля вручную. Поскольку мне нужно запустить эту команду / утилиту из кода Java, я должен полностью избегать запроса пароля во время выполнения. Я просмотрел много тем в Google, но ничего не произошло.

Как я могу это сделать?

3 ответа3

1

Вы должны настроить аутентификацию с использованием пары открытых / закрытых ключей, как вы уже упоминали, что вы сгенерировали с помощью ssh-keygen . Сгенерируйте его без пароля на закрытый ключ, если вам нужно использовать его в автоматизированных сценариях. Теперь просто скопируйте открытый ключ, используя ssh-copy-id name@host чтобы правильно настроить его на удаленной стороне (авторизовать открытый ключ).

Я предлагаю вам следовать учебник , как этот.

Если ssh работает, то scp работает аналогично.

После правильной настройки вы сможете сделать это без взаимодействия:

scp myscript.sh name@remotehost:~/
ssh name@remotehost ~/myscript.sh

Чтобы избежать необходимости вводить пароль или парольную фразу, есть пара вариантов

  • используйте агент аутентификации для хранения пароля / парольной фразы для закрытого ключа
  • не используйте парольную фразу для защиты закрытого ключа

Первый подходит для интерактивного использования, последний менее безопасен. Вы, вероятно, должны установить новый идентификатор пользователя для этого с минимальными правами на дальнем конце (например, chrooted)

0

Шаг 0 У вас должен быть доступ по ssh к удаленной машине.

Шаг 1. Сгенерируйте пару закрытых / открытых ключей RSA с помощью ssh-keygen на вашем компьютере с Linux и поместите ее куда-нибудь (например, / root / identity). Не предоставляйте парольную фразу.

Шаг 2. ssh-copy-id -i /root/identities/your.key user@remotemachine.tld

Шаг 3. Это оно. Теперь вы можете ssh -i /root/identities/your.key user@remotemachine your_command и пароль не будет запрашиваться . Конечно, вы должны иметь PubkeyAuthentication = yes в sshd_config удаленного компьютера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .