수정 : stdin이 터미널이 아니기 때문에 의사 터미널이 할당되지 않습니다.

대부분의 경우 스크립트에서 일종의 SSH 명령을 실행할 때만 혼동되는 "stdin이 터미널이 아니기 때문에 의사 터미널이 할당되지 않습니다"오류가 표시됩니다. 명령 줄에서 동일한 명령을 실행하는 경우 완벽하게 작동 할 수 있습니다.

계속 진행하기 전에 공개 키를 SSH 에이전트에 추가했는지 확인한 다음 ssh를 다시 사용해보십시오. 열쇠를 놓쳤을 수도 있습니다. 반면에 이것이 작동하지 않으면 스크립트에서 약간의 문제 해결을 수행해야합니다.

방법 1 : 의사 tty 할당 강제 및 비활성화

문제를 빠르게 해결할 수있는 한 쌍의 명령 줄 옵션이 있습니다. 의사 터미널 할당을 강제하기 위해 ssh -t -t -R 다음에 연결하려는 나머지 항목을 시도하십시오. 예를 들어 ssh -p 80 [email protected]을 사용하여 example.com에서 계정에 로그인한다고 가정 해 보겠습니다. 물론 존재하지 않는 문서의 더미입니다.

예를 들어 ssh -t -t -R -p 80 [email protected]을 실행하여 문제가 해결되는지 확인하십시오. 물론 시스템에 성공적으로 로그인하려면 이름을 실제 계정과 호스트 이름으로 바꿔야합니다. 이것은 터미널 할당을 강제하므로 stdin이 터미널 오류가 아니기 때문에 의사 터미널이 할당되지 않는 것을 볼 수 없습니다.

반면에 오류 메시지의 상수 문자열로 끝날 수 있습니다. 일부 사용자는 이것이 재미있는 것으로 간주 될 수 있다고 언급했습니다.

그럼에도 불구하고 확실히 실망 스럽기 때문에 Ctrl + C를 사용하여 프로세스를 종료하십시오.

-t 스위치를 하나만 사용하거나 숫자를 늘릴 수 있습니다. 이것이 작동하지 않으면 명령에서 -t 스위치를 -T 스위치로 바꾸십시오 (예 : ssh -T -R -p 80 [email protected]).

이 방법은 전체 의사 터미널 할당 프로세스를 모두 비활성화하므로 강제하지 않는 경우에 작동 할 수 있습니다. 물론 명령 줄에서 문제가되지는 않지만 스크립트에서 작동하는 옵션을 찾을 때 기록해 두어야 해당 서버에 액세스하기 위해 실행해야하는 향후 스크립트에서 사용할 수 있습니다.

ssh 명령은이 두 가지 반대 옵션에 유사한 이름을 부여 했으므로 -t는 의사 터미널을 강제로 할당하고 -T는이를 비활성화합니다. 이러한 옵션은 대소 문자를 구분하며 ssh가 작동하려면 전통적인 TTY 터미널이 필요하기 때문에 종종 스크립트 내부에서 필요합니다. 당연히 귀하의 경우에는 이러한 목적으로 터미널 에뮬레이터를 사용하게 될 것입니다.

방법 2 : sshpass 사용

일부 사람들은 기본적으로 포함되지 않은 sshpass 명령을 사용하면 스크립트가 더 잘 작동한다는 것을 알 수 있습니다. 시도해보고 싶거나 특정 사용 사례에 필요하기 때문에 언제든지 sudo apt-get install sshpass 또는 sudo yum install sshpass로 설치할 수 있습니다.

아직 사용하고 있지 않다면 아마도 필요하지 않을 것입니다. 그럼에도 불구하고 동일한 기술을 사용하여 이러한 종류의 환경에서도 의사 터미널 할당과 관련된 오류 메시지를 놀라게 할 수 있습니다.

예를 들어, sshpass -p password ssh -T [email protected]을 사용하여 시스템이 스크립트 내부에서 작동하도록합니다.

방법 3 : 작업 관리 오류 수정

경우에 따라이 모든 문제를 해결 한 후에도 다른 오류 메시지가 표시 될 수 있습니다. tty에 대한 액세스 권한이 없다는 경고가 표시되고 셸에 작업 제어가 없다는 것을 상기하면 어느 정도 정상적으로 작업 할 수 있어야합니다.

이 오류는 csh, tcsh 또는 Almquist 또는 기타 셸과 관련된 원격 서버의 불규칙한 문제로 인해 발생합니다. 다른 오류 메시지가 표시 되었기 때문에 눈치 채지 못했을 수 있지만 의사 터미널에 대해 다른 사람을 볼 수 없다면 평소와 같이 상대적으로 계속할 수 있습니다.

이 경우 Ctrl + Z를 사용하여 프로세스를 중지하는 것은 좋지 않을 수 있습니다. 프로세스를 다시 시작하는 방법이 없을 수 있기 때문입니다. 종료 할 때 중지 된 작업이 있다는 오류 메시지가 표시되면 로그 아웃 할 수 없습니다.

ps 및 kill 명령을 사용하여 종료 할 수없는 작업을 닫으십시오. 프로세스에서 작업을 잃어 버릴 염려가 없다고 가정합니다. 이제 종료 할 수 있습니다.

태그 Linux how-to ssh