マシン 1 に ssh で接続してから、別のマシン 2 に ssh で接続しようとしています。しかし、このエラーが発生します:
ssh user@computerone.com 'ssh otheruser@computertwo.com'
stdin: is not a tty
マシン 1 に ssh で接続してから、別のマシン 2 に ssh で接続しようとしています。しかし、このエラーが発生します:
ssh user@computerone.com 'ssh otheruser@computertwo.com'
stdin: is not a tty
シェルにログインするとき、リモート ホストは接続が人間のユーザーによって行われたと想定します。したがって、彼らがクライアントの標準を制御できると期待するのは合理的です。つまり、ユーザーはキーボードを介して端末に入力を行っています。リモートホストがユーザーが人間ではないことを検出した場合 (入力が端末 - 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 アドレスを使用します。