Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

bash script подключение по ssh

#linux #bash #ssh #shell


Необходимо запускать скрипты с сервера удаленно. Получается вот такая 
цепочка:
server1: вызывает скрипт, который командой ssh "server2" "script1.sh" вызывает другой
скрипт. Далее на server2 script1 вызывает уже другой скрипт локально, т.е source ./script2.sh
и вот в данном скрипте идет снова команда ssh "serverN" "script3". Но вылетает ошибка: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Если запускать script2.sh с сервера, то он отрабатывает. Получается проблема в цепочке
вызовов ssh.

Хотя доступ с есть, ключи на сервере есть. Не нашел ответа в гугле. Думаю что проблема
в окружении, пробовал указывать ключ напрямую - не помогает. Как решить данную проблему.
Буду благодарен, если посоветуете организовать централизованный доступ к скриптам каким-либо
другим способом!

Вопрос решился подставление ключа -i. ssh -i. 
    


Ответы

Ответ 1



конечно, лучше не «разбрасывать» секретные части ключей по компьютерам в сети, а держать их только в локальном (т.е., физически контролируемом) компьютере. чтобы работать с цепочкой компьютеров, подключаясь от одного к другому-третьему и т.д., можно использовать два несколько отличающихся подхода (подразумевается, что публичные части используемых ключей уже скопированы на все нужные компьютеры, а все секретные части уже известны агенту): воспользоваться настройками в файле ~/.ssh/config, в частности, возможностями директивы proxycommand, и подключаться к нужному компьютеру в цепочке вводом всего одной команды. пример необходимых секций host в файле ~/.ssh/config для цепочки локальный компьютер → user1@host1 → user2@host2: host host1 user user1 forwardagent yes host host2 user user2 forwardagent yes proxycommand ssh user1@host1 nc %h %p host host3 user user3 proxycommand ssh user2@host2 nc %h %p подключение к host2 (с локального компьютера): $ ssh host2 подключение к host3 (с локального компьютера): $ ssh host3 «руками» запускать на очередном в цепочке компьютере программу ssh, указав параметром следующий в цепочке компьютер. если директив forwardagent в соответствующих секциях host не описано, то надо будет явно указывать опцию -A прогрммы ssh. подключение к первому компьютеру в цепочке: $ ssh user1@host1 hostname host1 теперь ко второму (все примеры выполняется с локального компьютера): $ ssh user1@host1 ssh user2@host2 hostname Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). опа, забыли про опцию! исправляемся: $ ssh -A user1@host1 ssh user2@host2 hostname host2 добавляем третий компьютер: $ ssh -A user1@host1 ssh user2@host2 ssh user3@host3 hostname Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). хм. ну, да, на host2 ведь тоже надо пробросить доступ к агенту: $ ssh -A user1@host1 ssh -A user2@host2 ssh user3@host3 hostname host3 первый вариант представляется несколько более лаконичным с точки зрения вводимых команд, но зато надо больше «писанины разводить» в ~/.ssh/config

Комментариев нет:

Отправить комментарий