Почему ваш сценарий закрывает сокет
Всякий раз, когда ожидаемый сценарий достигает конца файла, он закрывает все порожденные процессы и завершает работу. Другими словами, в настоящее время он ведет себя как задумано.
Держать сокет открытым для взаимодействия
Чего не хватает, так это использования команды взаимодействий, когда вы видите командную строку. Например, после отправки вашего пароля:
expect {\$\s*} { interact }
В вашем конкретном случае вы могли бы просто позвонить в Interactive сразу же после отправки пароля, не дожидаясь запроса, но приведенный выше пример, как правило, является лучшей практикой, которая позволяет вам обрабатывать другие виды ситуаций, если вы решите это сделать.
Interact позволит вам делать то, что вы хотите: взаимодействовать с сеансом SSH. Это будет продолжаться до тех пор, пока вы не закроете соединение, и порожденный процесс не завершится.
Смотрите также
https://stackoverflow.com/questions/12236894/is-it-possible-to-automate-ssh-login-with-passwd-not-passphraseless-ssh/12237702#12237702