Мне было интересно, как SSH реализован на более низком уровне. Вот некоторые конкретные вопросы:
Как сервер (sshd) выполняет команды / создает процессы в долговременной оболочке без терминала на его конце? Как создается этот экземпляр оболочки?
Как происходит обмен данными между клиентом и сервером через сокет? Как только сервер выполнит команду и отправит вывод через сокет, как клиент узнает, когда прекратить чтение? Есть ли что-то в протоколе для этого?