Понимание аргумента PTY в ssh2 exec()


Ответ на следующий вопрос меня не удовлетворяет, я хочу узнать немного больше о том, что происходит. Может ли кто-нибудь объяснить аргумент $pty в вызове функции ssh2_exec()

Заставляет ли это клиента указывать серверу создавать PTY или PTY полностью зависит от клиента? Насколько я знаю, он подключен к такому процессу, как, например, SSHd, для которого потребуется вызов сервера. Кроме того, если установлено значение true, эмулирует ли он оболочку по умолчанию? Что это? Я знаю тебя может ли пройти xterm, например, который эмулирует PTY, это чем-то отличается? Эмуляция подразумевает, что, с моей точки зрения, это не настоящий PTY.

Это может быть немного запутанным для чтения, но я пытаюсь понять эту концепцию. Спасибо. Я ценю это.

Author: Community, 2013-01-05

1 answers

"pty" по сути является "каналом" между каким-либо приложением или демоном (например, я работаю над виртуализацией, и мы используем pty для предоставления виртуального терминала для виртуальной машины). У pty есть сторона "хозяин" и сторона "раб". Ведомая сторона - это то, что использовала бы ваша обычная "терминальная" программа - xterm или ssh и т. Д. Мастер используется любой "вещью", которая передает данные в терминал [и если вы записываете в pty, например, когда вы вводите или вставляете текст в xterm], он считывается процесс, управляющий мастером, - мастер затем делает все, что он должен делать с такими данными, например, отправляет их по сети в случае ssh.

Это полностью связано с тем, что происходит "с вашим концом". Если вы запускаете "интерактивную" команду по ssh - скажем, "ssh somemachine делает menuconfig" [предполагая, что ваш домашний каталог является исходным каталогом linux - мы проигнорируем тот факт, что это, вероятно, не так], по умолчанию не нужно создавать pty, поэтому menuconfig, вероятно, не удастся [выполнить работайте правильно, по крайней мере], потому что это "интерактивная" текстовая программа, которая позволяет вам нажимать клавиши для перемещения и т. Д. Таким образом, использование "ssh-t somemachine make menuconfig" даст вашему ssh pty. В качестве альтернативы, "ssh somemachine" по умолчанию выдаст вам pty, так как ожидается, что вы будете вводить данные на другом конце.

Pty является "локальным" терминалом, но процесс sshd предоставит ему данные с другого конца, и ваш локальный процесс sshd передаст их на "главную" сторону пти.

На этой странице описано то, что я пытался сказать http://lugatgt.org/2009/10/28/ssh-tips-and-tricks-2/

 2
Author: Mats Petersson, 2013-01-05 18:48:26