실제로 아래 명령을 실행할 필요는 없습니다. 비밀번호를 입력하지 않고 로그인하려는 경우 SSH 키를 알고 있습니다. ssh
파일 리디렉션을 우회하는 방법을 알고 싶습니다 .
다음 명령을 실행하면 ssh
비밀번호를 묻는 메시지가 표시됩니다.
ssh [email protected] > /dev/null 2> /dev/null < /dev/null
어떻게 작동하나요? stdin
, stdout
, 및 stderr
모두 리디렉션되지만 ssh
여전히 화면에 프롬프트를 인쇄하고 내가 입력한 내용을 읽을 수 있습니다. pseudo-tty 할당을 활성화하거나 비활성화하기 위해 AND (둘 다 아님) ssh
매개 변수를 추가하려고 시도했지만 아무런 차이가 없었습니다.-t -t
-T
저도 이런 식으로 입력과 출력을 모두 꺼보려고 했는데, 제대로 입력했는지는 모르겠습니다. 그래도 ssh
비밀번호를 묻는 메시지가 표시됩니다.
(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
답변1
OpenSSH readpassphrase.c, 75행:
/*
* Read and write to /dev/tty if available. If not, read from
* stdin and write to stderr unless a tty is required.
*/
프로그램은 TTY에 직접 읽고 쓰기 때문에 표준 입력 및 출력 파이프를 닫아 직접 입력을 비활성화하는 것은 불가능합니다. 제공된 비밀번호를 사용하거나 @muru가 제안한 대로 수행하도록 SSH 클라이언트에 지시해야 합니다.