Ssh
-t 和 -tt ssh 的區別
man ssh
說:-t 強制偽 tty 分配。這可用於在遠端機器上執行任意基於螢幕的程序,這非常有用,例如在實現菜單服務時。多個 -t 選項強制分配 tty,即使 ssh 沒有本地 tty。
https://explainshell.com/explain?cmd=ssh+-tt
多個 -t 選項強制分配 tty,即使 ssh 沒有本地 tty。
這具體是什麼意思?如果系統上沒有shell,ssh會自己創建嗎?-tt 失敗會發生什麼?
如果你這樣做:
ssh -t user@server<<EOT echo test EOT
您將收到一條消息:
Pseudo-terminal will not be allocated because stdin is not a terminal.
在這種情況下,stdin 提供的是 ssh,而不是您的本地 shell/tty。使用
-tt
將告訴它分配不管。這是一個案例,我敢肯定還有其他案例可以應用於此,但 stdin 是最明顯的案例之一。如果系統上沒有shell,ssh會自己創建嗎?
沒有 ssh 的本地 tty 並不表示本地 shell 不存在。上面的例子展示了使用標準輸入流到 ssh。
這具體是什麼意思?
這意味著無論本地連接如何,它都會強制分配 tty。見上面的例子。