ssh -tt에서 돌아온 후 Git bash에 더 이상 입력할 수 없습니다.

ssh -tt에서 돌아온 후 Git bash에 더 이상 입력할 수 없습니다.

.bash_profile대화형 환경의 원격 셸에서 명령을 실행하여 명령을 실행하기 전에 먼저 원격 셸을 로드하고 싶었습니다 .

이것은 훌륭하게 작동합니다:

  • echo "command" | ssh user@remote_host [1]

하지만 오류가 발생합니다.

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

위의 명령이 내 목적에 잘 작동하기 때문에 이것이 문제인지는 모르겠지만 여전히 문제를 해결할 수 있는 해결책을 찾다가 발견했습니다.

  • ssh -t -t [2]

echo "command" | ssh -tt user@remote_host그것들을 결합하면 훌륭하게 작동하는 것을 얻을 수 있습니다 .

하지만 Git bash에서 이상한 이유로 명령 실행을 마치고 돌아온 후에는 더 이상 입력할 수 없습니다. 잘 작동하는 Cygwin에서 테스트했는데 이 문제가 있는 것은 Git bash뿐입니다.

exit원격 셸에 여전히 보이지 않게 붙어 있지만 아무 것도 작동하지 않는 경우를 대비해 입력을 시도했습니다 .

ssh -ttGit bash에서 수행할 때 문제가 될 수 있는 아이디어가 있습니까 ?

답변1

"의사 터미널은 할당되지 않습니다." 메시지는 단지 정보 제공용일 뿐입니다. 실행 중인 명령에 터미널이 필요하지 않은 경우 -TPTY 할당을 비활성화하고 메시지를 종료하는 옵션을 사용하여 ssh를 실행하는 것이 좋습니다 .

귀하의 지역 TTY가 어떤 이유로 이상한 상태에 남아 있는 것 같습니다. 실행하면 stty sane터미널이 사용 가능한 상태로 재설정됩니다. 입력할 수 없다고 말씀하셨지만 다음과 같이 시도해 볼 수도 있습니다.

  1. 현재 있을 수 있는 Ctrl-S/Ctrl-Q 일시 중지를 취소하려면 Control-Q를 입력합니다(즉, "Control" 키를 누른 채 "Q" 누르기).
  2. Control-J를 입력하세요. 이는 쉘이 새 명령줄을 읽을 준비가 되었는지 확인하는 리터럴 개행 문자입니다.
  3. "stty sane"을 입력한 다음 Control-J를 다시 입력하세요. 입력한 내용이 화면에 나타나지 않더라도 시도해 보세요.

그래도 작동하지 않으면 핵 옵션은 다른 터미널의 붙어 있는 TTY에서 "stty sane"을 실행하는 것입니다.

  1. 다른 터미널 창을 엽니다.
  2. "ps"를 사용하여 정체된 세션이 어떤 PTY에 있는지 알아보세요.
  3. stty sanePTY에서 리디렉션된 입력으로 실행합니다 .

예를 들어 Linux에서는 다음과 같습니다.

$ ps -fu jdoe
...
jdoe   2083  2080  0 22:17 pts/0    00:00:00 /bin/bash  <-- TTY is "/dev/pts/0"
$ stty sane < /dev/pts/0

관련 정보