Как вы используете ssh в шелл-скрипте?
Вопрос
Когда я пытаюсь использовать ssh команда в сценарии командной оболочки команда просто находится там.У вас есть пример того, как использовать ssh в сценарии оболочки?
Решение
Зависит от того, что вы хотите сделать и как вы это используете.Если вы просто хотите удаленно и безопасно выполнить команду на другом компьютере, просто используйте
ssh user@host command
например
ssh user@host ls
Чтобы сделать это безопасно, вам нужно либо запросить у пользователя пароль во время выполнения, либо настроить ключи на удаленном хосте.
Другие советы
Во-первых, вам нужно убедиться, что вы настроили вход без пароля (с открытым ключом).Существует по крайней мере два варианта ssh с немного отличающимися форматами файлов конфигурации.Проверьте ssh справочную страницу в вашей системе, проконсультируйтесь с местным системным администратором или перейдите по адресу Как мне настроить аутентификацию по открытому ключу?.
Бежать ssh в пакетном режиме (например, в рамках сценария командной оболочки) вам необходимо передать команду, которую вы хотите запустить.Синтаксис таков:
ssh host command
Если вы хотите запустить более одной команды одновременно, используйте кавычки и точки с запятой:
ssh host "command1; command2"
Кавычки необходимы для защиты точек с запятой от интерпретатора командной оболочки.Если бы вы их не указали, только первая команда была бы запущена удаленно, а все остальные были бы запущены на локальном компьютере.
Вы можете использовать expect
команда для ввода информации об имени пользователя / пароле.
Вам нужно поместить свой открытый ключ SSH в ~/.ssh/authorized_keys
файл на удаленном хостинге.Тогда вы сможете подключиться по SSH к этому хосту без пароля.
В качестве альтернативы вы можете использовать ssh-agent
.Я бы не рекомендовал хранить пароль в скрипте.
Самый простой способ - это использовать сертификат для пользователя, который запускает скрипт.
Более сложный вариант подразумевает добавление в stdin пароля, когда команда командной строки запрашивает его.Ожидайте, что библиотеки perl покажут пользователю приглашение с запросом пароля (по крайней мере, если оно интерактивное), есть много вариантов.