24
我試圖用ssh連接到機器,然後用ssh連接到另一臺機器。但是得到這個錯誤:執行遠程命令時出現SSH錯誤:「stdin:不是tty」
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
我試圖用ssh連接到機器,然後用ssh連接到另一臺機器。但是得到這個錯誤:執行遠程命令時出現SSH錯誤:「stdin:不是tty」
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
當登錄到shell時,遠程主機假定連接是由人類用戶完成的。因此,期望他們能夠控制客戶端上的中的標準是合理的。也就是說,用戶通過鍵盤在終端上進行輸入。如果遠程主機檢測到用戶不是人(因爲輸入不是終端 - tty,而是另一個進程),它可能會警告用戶這種意外情況。
所討論的不當行爲,以及如何避免它(man ssh
,尋找-t一個更透徹的解釋)的演示。
$ ssh -t genja.org 'ssh raptor.lan hostname\; uptime'
host: genja.lan
raptor
21:17:27 up 3 days, 15 min, 1 user, load average: 0.00, 0.00, 0.00
Connection to genja.org closed.
$ ssh genja.org uptime
host: genja.lan
21:17:43 up 12 days, 17:40, 1 user, load average: 0.30, 0.08, 0.02
...和錯誤:
$ ssh genja.org 'ssh raptor.lan hostname\; uptime'
host: genja.lan
Permission denied (publickey,keyboard-interactive).
您可能希望改爲隧道:
ssh -L 4444:raptor.lan:22 genja.org
然後,在不同的終端上:
ssh -p 4444 localhost will give you a conenction straight to "raptor.lan"
如果未在遠程端配置DNS別名,請使用IP地址,例如192.168.0.11。
嘗試將'-t'標誌添加到第一個'ssh'。順便說一下,因爲你的問題與編程無關,所以在http://superuser.com/ – aland
@aland可能更合適你有理由。用-t選項運行。 – Jhonathan