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
」という意味で使います。