ProxyCommand
どのように機能するのか理解しようとしています。
%> ssh -oProxyCommand='ls' root@ubuntu
ssh_exchange_identification: Connection closed by remote host
%> ssh -oProxyCommand='useradd' root@ubuntu
/bin/bash: line 0: exec: useradd: not found
ssh_exchange_identification: Connection closed by remote host
また、次の組み込みコマンドを試しましたが、env
出力も提供されませんでした。
任意のコマンドを実行できない理由についてのアイデアはありますか?
編集する
同様のコマンドを実行できることを知っていますssh host $command
。 ProxyCommandがコマンドを実行できない理由を特定しようとしています。実際に人々が反対する理由はわかりません。
ベストアンサー1
このProxyCommand
オプションは、リモートシステムで実行するための任意のコマンドではありません。煙いくつかのデータフロー。 ~からマニュアルページssh_config
(強調する):
プロキシコマンド
使用するコマンドを指定します。サーバーに接続。コマンド文字列は行末まで拡張され、シェルプロセスの遅延を避けるために、ユーザーのシェル 'exec'コマンドを使用して実行されます。
コマンド文字列では、「%h」は接続するホスト名、「%p」はポート、「%r」はリモートユーザー名に置き換えられます。コマンドは基本的に何でも構いません。標準入力から読み取って標準出力に書き込む必要があります。 最後に、一部のシステムで実行されている sshd(8) サーバーに接続するか、どこかで sshd -i を実行する必要があります。。
ssh
リモートシステムでのみコマンドを実行するには、次のようにコマンドラインの末尾に入力します。
ssh root@ubuntu ls