2012-06-12 18 views
0

Привет, У меня есть следующий скрипт, который делает вход ssh на мой сервер.SSH Expect Password Issue with Login

spawn ssh [email protected] 
           expect "*(yes/no)?" 
          send "yes" 
           expect "password:" 
            send "pwd\n" 
           close 

он работает нормально, но это не проходит значение «PWD» к системе, поэтому скрипт идет тайм-аут и бросить курить. Любые предложения?

+1

Я бы скорее предложил использовать ssh-ключи для использования ssh в скриптах, а затем ваш пароль в этом файле сценария. –

+0

«он отлично работает, но не передает значение« pwd »в систему, поэтому скрипт переходит в режим ожидания и завершает работу». Звучит больше похоже на то, что он вообще не работает? – niko

ответ

1

Вы можете попробовать с "KbdInteractiveAuthentication" установить в "no" (ssh -o KbdInteractiveAuthentication="no" [email protected]). SSH по умолчанию использует Keyboard Interactive Authentication, что-то expect может и не понять.

Я бы настоятельно рекомендовал вместо этого использовать аутентификацию с открытым ключом (как уже рекомендовал Flo). Это проще в обращении, а также более безопасно и удобнее. Если вы просто ищете способ входа на удаленный сервер без необходимости вводить пароль каждый раз, взгляните на ssh-agent, который сохранит пароль для вас после того, как вы ввели его один раз в свой рабочий стол. Если вы действительно не хотите вводить свой пароль, используйте pam_ssh, где будет использоваться пароль для входа на ваш рабочий стол.

0

По умолчанию команда ожидать еще не установлена. Таким образом, вы должны установить его для получения правильного вывода.