2012-09-18 16 views
24

マシン1にsshで接続し、別のマシン2にsshで接続しようとしています。しかし、このエラーが表示される:リモートコマンド実行時のSSHエラー: "stdin:ttyではありません"

+9

'-t'フラグを最初の' ssh'に追加してみてください。ちなみに、あなたの質問はプログラミングに関連していないので、http://superuser.com/ – aland

+1

@alandでより適切かもしれません。あなたは理由があります。 -tオプションを指定して実行します。 – Jhonathan

答えて

30

シェルにログインすると、リモートホストは接続が人間のユーザによって行われたとみなします。したがって、クライアント上のの標準を制御できると期待することは合理的です。すなわち、ユーザは、キーボードを介して端末に入力を与えている。リモートホストがユーザが人間ではないことを検出した場合(入力がterminal-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エイリアスが設定されていない場合は、192.168.0.11などのIPアドレスを使用します。

関連する問題