heredoc을 사용하고 모든 명령을 heredoc에 넣으면,
ssh -t -i master.pem cloud-user@$1 <<EOSSH
sudo service x restart
sudo service y restart
EOSSH
오류가 발생합니다.
Pseudo-terminal will not be allocated because stdin is not a terminal.
다른 -t 옵션을 추가하면 제대로 작동합니다.
ssh -t -t -i master.pem cloud-user@$1 <<EOSSH
sudo service x restart
sudo service y restart
EOSSH
pseudo-terminal
SSH 세션의 맥락에서 이는 무엇을 의미합니까?
stdin is not a terminal
- Bash는 SSH 클라이언트를 위한 표준 입력 터미널을 제공하지 않습니까?
옵션은 무엇을 -t
의미하며 -t -t
옵션과 어떻게 다릅니까 -t
?
답변1
설명된 대로 man ssh
:
-t는 의사 tty 할당을 강제합니다. 이는
원격 컴퓨터에서 임의의 화면 기반 프로그램을 실행하는 데 사용할 수 있으며 , 이는
예를 들어 메뉴 서비스를 구현할 때 유용합니다. 여러 -t
옵션은 ssh에 로컬 tty가 없더라도 tty 할당을 강제합니다.