sshを使用してマシン1に接続してから、sshを使用して別のマシン2に接続しようとしていますが、このエラーが発生します。
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
なぜですか?
承認された回答:
デフォルトでは、sshを使用してリモートマシンでコマンドを実行すると、TTYはリモートセッションに割り当てられません。これにより、TTYの癖に対処することなく、バイナリデータなどを転送できます。これは、computerone
で実行されるコマンドに提供される環境です。 。
ただし、リモートコマンドなしでsshを実行すると、シェルセッションを実行している可能性が高いため、TTYが割り当てられます。これは、ssh [email protected]
によって予期されています コマンドですが、前の説明のため、そのコマンドで使用できるTTYはありません。
computertwo
でシェルが必要な場合 、代わりにこれを使用してください。これにより、リモート実行中にTTY割り当てが強制されます:
ssh -t [email protected] 'ssh [email protected]'
これは通常、sshチェーンの最後でシェルまたはその他の対話型プロセスを最終的に実行する場合に適しています。データを転送する場合は、-t
を追加することは適切でも必須でもありません。 、ただし、すべてのsshコマンドには、次のようなデータを生成または消費するコマンドが含まれます。
ssh [email protected] 'ssh [email protected] "cat /boot/vmlinuz"'