
ジャンプボックス経由でリモート ホストにアクセスしています。ssh シェル経由でアクセスすると、リモート ホストに簡単にアクセスできます。
ssh remoteHost
Last login: Tue Feb 16 12:56:26 2016 from xx.xxx.xx.xx
remoteHost:user:~$ ls
<shows all the stuff>
しかし、SSH コマンドライン オプションを使用してコマンドを実行しようとすると、常に次のメッセージが表示されます。
ssh remoteHost ls
"ls" isn't allowed to be executed.
Killed by signal 1.
sshコマンドを正常に実行できますいくつかのホストは許可しますが、他のホストは許可しません。
これは、サーバー上で構成できる設定、つまり「リモート SSH コマンドを許可する」などでしょうか?
ちなみに、私はパスワードなしで SSH を使用してリモート ホスト上でコマンドを使用できるようにするにはどうすればよいでしょうか?しかし、その質問に対する唯一の答えが示唆しているように、私の問題は引用とは関係がないと確信しています。
アップデート:
リモート ホストには、次のような内容を含む authorized_keys2 ファイルがあります。
ssh-rsa <encrypted stuff> jumpbox_user@jumpbox
ssh-rsa <encrypted stuff> jumpbox_user@mydesktop
私の ssh/.config ファイルは次のようになります:
Host remoteHost
HostName remoteHost
User user
ProxyCommand ssh -W %h:%p jumpbox_user@jumpbox_host
ServerAliveInterval 60
答え1
オプションを使用して ssh 行を実行し-t
、リモート コマンドが ' で区切られていることを確認してください。これにより、ssh はリモート ホスト上でコマンドを実行するようになり、行のエラーがさらに防止されます。
ssh user@remoteHost -t 'ls'
参考までに: -t オプションは疑似端末の割り当てを有効にします。これは、SSH 端末を開いてコマンドを入力し、STDOUT を出力して終了する動作を実際にシミュレートします。これは、おっしゃるとおり手動で実行したこととまったく同じです。
SSH のマニュアルページによると:
-t 擬似端末の割り当てを強制します。これは、リモート マシン上で任意のスクリーン ベースのプログラムを実行するために使用できます。これは、メニュー サービスを実装する場合などに非常に便利です。複数の -t オプションは、ssh にローカル tty がない場合でも、tty の割り当てを強制します。
参考文献: