Подтвердить что ты не робот

Как ssh из bash script?

Я пытаюсь создать ssh-соединение и делать некоторые вещи на удаленном сервере из script.

Однако терминал запрашивает у меня пароль, а затем открывает соединение в окне терминала вместо script. Команды не выполняются до тех пор, пока я не выйду из соединения.

Как я могу получить ssh из bash script?

4b9b3361

Ответ 1

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

  • Чтобы запускать команды удаленно через ssh, вы должны указать их как аргумент ssh, например:

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

Ответ 2

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

#!/usr/bin/expect -f
spawn ssh [email protected]
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN

Ответ 3

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

# ~/.ssh/config 
ControlMaster auto
ControlPath ~/.ssh/pool/%[email protected]%h

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

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

ssh ... -o KbdInteractiveAuthentication=no ....

Ответ 4

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

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