Регистрация моего собственного ответа, так как я нашел путь вокруг этой проблемы. Вот сценарий, который на самом деле работает:
#!/usr/bin/expect
set login "user"
set addr "address1"
set addr2 "address2"
set pw "password"
spawn ssh $login@$addr
expect "$login@$addr\'s password:"
send "$pw\r"
expect "$login@host:"
send "ssh $addr2\r"
expect "$login@$addr\'s password:"
send "$pw\r"
interact
Так в основном я заменил строку spawn ssh $addr2
с send "ssh $addr2\r"
. Я пытался породить другой ssh от того, где я запустил вместо того, чтобы запустить другой ssh на хосте I первых ssh'd к.
Наиболее очевидным из них является IPv6, если какой-то уязвимый сервер прослушивает этот протокол. Причиной может быть любой другой сетевой протокол.
Вам не нужно отбрасывать весь трафик IPv4, чтобы защитить машину от удаленных атак. Достаточно не запускать какой-либо уязвимый сервис. В этом отношении подойдет установка любой приличной ОС по умолчанию.
Если вы параноик и не доверяете используемому вами программному обеспечению в достаточной степени без ошибок, то вообще не используйте компьютер. Стандартный совет - держать его выключенным, но этого недостаточно: в вашем BIOS может быть ошибка пробуждения по локальной сети (случай, когда выключенный компьютер можно использовать, и его включение удаляет уязвимость!).