2013-01-05 1 views
2

다음에 대한 답은 저를 만족시키지 못합니다. 무슨 일이 일어나고 있는지 좀 더 알고 싶습니다. Can anyone explain the $pty argument in ssh2_exec() function callssh2_exec()의 PTY 인수 이해

클라이언트가 서버에 PTY를 알리도록하거나 강제로 PTY를 클라이언트 측에 보내도록합니까? 내가 아는 한, 예를 들어 SSHd와 같은 프로세스에 서버에 대한 호출이 필요합니다. 또한 으로 설정하면이 기본 쉘을 에뮬레이션합니까? 이게 뭐야? 예를 들어 xterm을 전달할 수 있다는 것을 알고 있습니다.이 PTY를 에뮬레이트하는 것은 무엇입니까? 에뮬레이션은 내 관점에서 볼 때 실제 PTY가 아니라는 것을 의미합니다.

읽을 약간 혼동 될 수 있습니다,하지만 난이 개념을 이해하기 위해 노력하고있어 그. 감사합니다. 감사합니다.

답변

2

A "PTY는"기본적으로 응용 프로그램 또는 데몬 (예를 들어, 내가 가상화 작업, 우리는 가상 컴퓨터의 가상 터미널을 제공하기 위해 PTY를 사용하는) 어떤 종류의 사이에 "파이프"입니다. pty에는 "마스터"와 "슬레이브"측면이 있습니다. 슬레이브 측은 보통 "터미널"프로그램이 사용하는 것입니다 - xterm이나 ssh 등. 마스터는 터미널에 데이터를 제공하는 "것이"무엇이든간에 사용됩니다. xterm에 텍스트를 타이핑하거나 붙이면 마스터를 제어하는 ​​프로세스가 텍스트를 읽습니다. 마스터는 그런 데이터로 무엇을해야 할지를 결정합니다. ssh 경우에 네트워크를 통해 전송합니다.

"당신의 목적"과 완전히 관련이 있습니다. ssh를 통해 "대화 형"명령을 실행하는 경우 - "ssh somemachine make menuconfig"[가정용 디렉토리가 Linux 소스 디렉토리라고 가정 할 때 - 그것이 사실이 아닐 것이라는 사실을 무시할 것입니다.], 기본값은 pty를 만들지 않으려면 menuconfig가 아마도 [제대로 작동하려면 실패 할 것입니다] 적어도 "대화 형"텍스트 프로그램이기 때문에 키를 눌러서 움직일 수 있습니다. "ssh -t somemachine make menuconfig"를 사용하면 ssh에게 pty를 줘. 또는, "ssh somemachine"은 기본적으로 pty를 줄 것입니다. 왜냐하면 여러분은 다른 것을 입력 할 것으로 예상되기 때문입니다.

pty는 "로컬"터미널이지만 sshd 프로세스는 다른 쪽에서 데이터를 제공하고 로컬 sshd 프로세스는이를 pty의 "마스터"측으로 공급합니다.

이 페이지

내가 좋은 대답 http://lugatgt.org/2009/10/28/ssh-tips-and-tricks-2/

+0

말을 해봤에 대해 설명합니다, 감사합니다. 아주 자세하게. – user1807879