Как к ssh из сценария удара?

Я пытаюсь создать соединение SSH и сделать некоторые вещи на удаленном сервере из сценария.

Однако терминал предлагает мне пароль, затем открывает соединение в окне терминала вместо сценария. Команды не становятся выполняемыми, пока я не выхожу из соединения.

Как может я ssh из сценария удара?

60
задан Ben 1 June 2014 в 14:28
поделиться

4 ответа

  1. Если вы хотите, чтобы запрос пароля исчез, используйте аутентификацию на основе ключа ( описана здесь ).

  2. Для удаленного запуска команд через ssh вы должны указать их как аргумент ssh, например:

root @ host : ~ # ssh root @ www 'ps -ef | grep apache | grep -v grep | wc -l '

68
ответ дан 24 November 2019 в 17:50
поделиться

Если вы хотите продолжать использовать пароли и не использовать обмен ключами, вы можете сделать это с помощью команды «ожидать», например:

#!/usr/bin/expect -f
spawn ssh user@hostname
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN
19
ответ дан 24 November 2019 в 17:50
поделиться

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

После этого ваши сценарии будут работать без необходимости ввода пароля. Но в целях безопасности не следует делать этого для пользователей root!

2
ответ дан 24 November 2019 в 17:50
поделиться

Есть еще один способ сделать это с помощью общих подключений, то есть: кто-то инициирует подключение, используя пароль, и каждое последующее подключение будет мультиплексироваться по одному и тому же каналу, что устраняет необходимость в повторной аутентификации. (И это тоже быстрее)

# ~/.ssh/config 
ControlMaster auto
ControlPath ~/.ssh/pool/%r@%h

, тогда вам просто нужно войти в систему, и пока вы вошли в систему, сценарий bash сможет открывать ssh-соединения.

Затем вы можете остановить работу вашего скрипта, если кто-то еще не открыл канал:

ssh ... -o KbdInteractiveAuthentication=no ....
5
ответ дан 24 November 2019 в 17:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: