SSH автоматический вход, но пользовательский контроль после - PullRequest
0 голосов
/ 13 апреля 2011

Вот история.У меня есть сервер Debian 5, автоматически запускающийся под учетной записью локального пользователя.У локальной учетной записи есть следующий файл .profile

#!/bin/bash

SERVERPASS="password"
function with_password {
expect << END
set timeout 900
spawn $2
expect *assword:*
send -- "${1}\r"
expect EOF
exit 0
END
}

cd /home/timecard
with_password $SERVERPASS "ssh timecard@192.168.254.5 -p 22"

. Затем он подключается к удаленному компьютеру как пользовательская временная карта.

Однако проблема заключается в том, что я не могу нормально с ним взаимодействовать.Когда я набираю текст, текст не остается в моей программе на удаленном компьютере.

Однако, когда я подключаюсь вручную, он работает просто отлично.

Так как мне имитировать ручной вход в систему?сервер с помощью команды ожидают?Я пропускаю команду?

PS Да, я знаю, что автоматический вход в систему плох, я знаю, что ssh autologin плох, и т.д ...

1 Ответ

1 голос
/ 13 апреля 2011

Проблема здесь в expect EOF, я думаю.Это означает, что ваш ожидаемый вызов вернется только после того, как вы уже вышли из системы, поэтому вы не можете отправлять на него какие-либо ключи.

Работает ли то же самое без этой линии?

Но, конечно, используйтепроверка подлинности с открытым ключом вместо автоматического входа по паролю.


Следующий сценарий ожидаемого запуска работает для меня с ssh (у меня не включена проверка подлинности по паролю, поэтому я использую «хотите ли вы разрешитьвместо ключа "host host"):

#!/usr/bin/expect -f

system ssh-keygen -R localhost
spawn ssh -o StrictHostKeyChecking=ask localhost
expect "(yes/no)? "
send -- "yes\n"
interact
...