#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
Комментариев нет:
Отправить комментарий