2017-12-10 11 views
0

나는 특정 명령 세트를 실행하기 위해 shelljs를 사용 해왔다. 그래서 나는 shelljs를 통해 ssh를 통해 원격 우분투 서버에 연결을 시도했다. 이것은 내 nodej 파일입니다.ShellJs로 SSH 실행하기

var shelljs = require('shelljs'); 
shelljs.exec('ssh -i [path/to/pem/file] [email protected][taregt_ip]'); 

는하지만 난이 오류 :

Pseudo-terminal will not be allocated because stdin is not a terminal. 

가 어떻게이 문제를 해결하거나 하나의 명령으로 ssh를 연결하는 다른 유틸리티가 있습니다.

편집 : 당신이 내 문제의 중복이 아닌 참조 할 수 있도록 링크를 게시하고 있습니다.

+1

stdin이 터미널이 아니기 때문에 의사 터미널이 할당되지 않음] (https://stackoverflow.com/questions/7114990/pseudo-terminal-will-not-be-allocated-because-stdin- - not-a-terminal) –

답변

1

SSH가 항상 의사 단말기를 할당하는 것은 아닙니다. 이 내용은 existing answer에 설명되어 있습니다. 이를 강제로 수행하려면 -tt 플래그를 추가해야합니다.

즉, 나는 shelljs을 사용하지 않을 것이라고 말했다. 로컬 바이너리를 실행 중일 때이 솔루션은 a) 이식성이 없으며 b) 오류를 구문 분석하거나 예기치 않은 결과를 처리하는 방법을 알지 못합니다. 비슷한 프로젝트의 경우 이전에 ssh2을 사용했습니다. 대화 형 SSH 옵션이있어 SSH 연결에서 스트림 (STDOUT 및 STDIN)을 쉽게 만들 수 있습니다.

+0

본 [이 링크] (https://stackoverflow.com/questions/7114990/pseudo-terminal-will-not-be-allocated-because-stdin-is-not-a) -terminal). 그러나 유용하지 않습니다. 'ssh2'가 올바른 선택 인 것으로 보이지만이 오류가 발생합니다. '핸드 쉐이크를 기다리는 동안 시간 초과 됨 ' –

+0

@Satnam은 자세한 모드로 실행합니다. SSL 설정에 문제가 있다고 생각합니다. 둘 다 당신에게 문제가되는 이유입니다. –