두 번째 명령은 무시됩니다.
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
꼭 필요한 경우가 아니면 루트로 명령을 실행하지 않아야 하며 hostname
루트는 필요하지 않습니다. 이 모든 것을 고려하면 필요한 작업을 수행해야 합니다.
ssh -q -t -o ConnectTimeout=10 learnserver sh -c "hostname && sudo grep PermitRootLogin /opt/ssh/etc/sshd_config"
즉, 여러 명령을 실행하려고 하지 말고 하나로 병합하십시오. 여기서는 sh -c command
"시작 sh
하고 실행하다 command
"라는 의미로 사용합니다.