Как вы используете ssh в оболочке script?

Когда я пытаюсь использовать команду ssh в оболочке script, команда просто сидит там. Есть ли у вас пример использования ssh в оболочке script?

Ответ 1

Зависит от того, что вы хотите сделать, и как вы его используете. Если вы просто хотите выполнить команду удаленно и безопасно на другом компьютере, просто используйте

ssh [email protected] command

например

ssh [email protected] ls

Чтобы сделать это безопасно, вам нужно либо попросить пользователя пароль во время выполнения, либо настроить ключи на удаленном хосте.

Ответ 2

Во-первых, вам нужно убедиться, что вы настроили пароль без пароля (вход в открытый ключ). Есть как минимум два варианта ssh с немного разными форматами конфигурационных файлов. Просмотрите man-страницу ssh в вашей системе, обратитесь к локальному системному администратору или перейдите к Как настроить аутентификацию с открытым ключом?.

Чтобы запустить ssh в пакетном режиме (например, в оболочке script), вам нужно передать команду, которую вы хотите запустить. Синтаксис:

ssh host command

Если вы хотите одновременно запускать несколько команд, используйте кавычки и точки с запятой:

ssh host "command1; command2"

Кавычки необходимы для защиты точек с запятой от интерпретатора оболочки. Если вы их оставите, только первая команда будет запущена удаленно, а все остальное будет запущено на локальной машине.

Ответ 3

Вы можете использовать команду expect для заполнения информации о имени пользователя/пароле.

Ответ 4

Вам нужно поместить открытый SSH-ключ в файл ~/.ssh/authorized_keys на удаленном хосте. Тогда вы сможете использовать SSH для этого хоста без пароля.

В качестве альтернативы вы можете использовать ssh-agent. Я бы рекомендовал не хранить пароль в script.

Ответ 5

Самый простой способ - использовать сертификат для пользователя, который запускает script.

Более сложная задача заключается в добавлении к паролю пароля, когда команда оболочки запрашивает его. Ожидайте, perl-библиотеки, покажите пользователю запрос с запросом пароля (если это интерактивно, по крайней мере), есть много вариантов.