Это немного сложнее, чем это.
SSH и другие приложения ожидают несколько больше услуг для своего "ввода", чем поток байтов, они требуют, чтобы терминал был активным.
Терминал предлагает различные услуги, такие как включение и выключение символа «эхо» (вы отключаете его для ввода паролей, включаете его для обычной работы).Уметь захватывать определенные последовательности управления (выборочно игнорировать сигналы прерывания или приостановки), получать уведомления об изменениях на экране дисплея (ssh нуждается в этом, чтобы он, в свою очередь, мог уведомить удаленный конец об изменении размера терминала, и ваш удаленный редактор может правильно отобразить зановосам по себе).
Unix предоставляет сервис под названием «псевдо-терминалы» (сокращенно как «pty»), который предоставляет эту функцию, а Mono имеет привязку .NET, которая позволяет управлять процессами с помощью псевдо-терминалов, вы можете найти кодздесь:
http://github.com/mono/pty-sharp
Здесь есть образец.