複数のコマンドを使用してリモートホストでgrepを実行する

複数のコマンドを使用してリモートホストでgrepを実行する

2番目のコマンドは無視されます。

ssh -q -t -o ConnectTimeout=10 learnserver sudo su - root -c 'hostname' && "/grep PermitRootLogin /opt/ssh/etc/sshd_config/"

答え1

一連のコマンドを ssh にスクリプトに渡すことができます。あなたの状況を例に挙げましょう。

{
  echo "sudo su -"
  echo "hostname"
  echo "grep PermitRootLogin /opt/ssh/etc/sshd_config/"
} > /tmp/some-script.sh

それから

ssh your-remote < /tmp/some-script.sh

「スクリプトの生成」は、スクリプトがどのように見えるかについての例に過ぎません。

答え2

まず、あなたは本当にそれを必要とせずsudo su、確かに必要ではありませんsudo su - root。このsuコマンドのデフォルト値はルートですが、このsudoコマンドはルートとして実行する必要があるコマンドを実行するために存在します。したがって、sudo command必ずしも必要でない限り、rootとしてコマンドを実行しないでください。roothostnameは必要ありません。これらすべてを考慮すると、必要な作業を行う必要があります。

ssh -q -t -o ConnectTimeout=10 learnserver sh -c "hostname && sudo grep PermitRootLogin /opt/ssh/etc/sshd_config"

つまり、複数のコマンドを実行しようとするのではなく、1つにマージしてください。ここではsh -c command「起動しshて実行するcommand」という意味で使います。

関連情報