Command-Line
SSH 內的 SSH 失敗並顯示“stdin: is not a tty”
我正在嘗試使用 ssh 連接到機器一,然後使用 ssh 連接到另一台機器,但是我收到此錯誤。
ssh user@computerone.com 'ssh otheruser@computertwo.com' stdin: is not a tty
為什麼?
預設情況下,當您使用 ssh 在遠端電腦上執行命令時,不會為遠端會話分配TTY 。這使您可以傳輸二進制數據等,而無需處理 TTY 怪癖。這是為在 上執行的命令提供的環境
computerone
。但是,當您在沒有遠端命令的情況下執行 ssh 時,它會分配一個 TTY,因為您可能正在執行一個 shell 會話。這是該
ssh otheruser@computertwo.com
命令所期望的,但由於前面的解釋,該命令沒有可用的 TTY。如果您想要一個 shell on
computertwo
,請改用它,這將在遠端執行期間強制 TTY 分配:ssh -t user@computerone.com 'ssh otheruser@computertwo.com'
當您最終在 ssh 鏈的末端執行 shell 或其他互動式程序時,這通常是合適的。如果您要傳輸數據,那麼 add 既不合適也不需要
-t
,但是每個 ssh 命令都將包含一個數據生成或消耗命令,例如:ssh user@computerone.com 'ssh otheruser@computertwo.com "cat /boot/vmlinuz"'