четверг, 31 января 2013 г.

Автоматическая авторизация паролем по ssh

Иногда бывает нужно авторизовываться на устройствах по ssh, которые не умеют авторизации по ключам. Увы, штатно в ssh пароль не передать никак. В этом случае помогают expect или sshpass



Для expect нужно писать скрипт, например

#!/usr/bin/expect -f
spawn ftp -n -i
set timeout 10000
send "open $env(HOST)\n" 
expect {
 "Connected" {
           send "user $env(USER) $env(PASS)\n"
 }
 default {
           send_error "Error connect on $env(HOST)\n"
           exit 2
 }
}
expect {
 -re "Login failed|incorrect" {
           send_error "Invalid login on $env(HOST)\n"
           exit 1
 }
 "logged in." {
               send "passive on\n" 
               send "binary\n"
               send "cd $env(DIR)\n"
          
             }
 timeout   {
           send_error "Timeout login on $env(HOST)\n"
           exit 2
 }
.....

(отсюда)

а для sshpass вызов такой:
sshpass -p [yourpassword] ssh [yourusername]@[host]
но у некоторых есть проблема с выходом - после exit соединение не рвется.

пример 2
rsync –rsh=’sshpass -p 12345 ssh -l test’ host.example.com:path

линки
sshpass Non-interactive ssh password authentication

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

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