sshpass의 여러 명령 [닫기]

sshpass의 여러 명령 [닫기]

에서 여러 명령을 사용할 수 있는 방법이 있나요 sshpass? 다양한 조합을 사용해 보았지만 오류가 발생합니다.

$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
  command_one
  command_two
  command_three
EOF

정확하고 정확한 명령은 무엇이며 가능하다면 예를 들어주세요.

답변1

귀하의 솔루션은 sshpass 유무에 관계없이 작동합니다. 작동하지 않으면 다른 문제가 있을 수 있습니다.

또한 항상 각 변수를 인용해야 합니다.

또한 stricthostkeychecking을 쉽게 비활성화해서는 안 됩니다. 호스트 키가 자주 변경되면 서버가 손상되었을 수 있습니다.

그러나 목표를 달성하는 몇 가지 방법은 다음과 같습니다.


명령 구분 기호 사용( ;, &&, ||)

sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" 'command_one; command_two; command_three'

here-doc(원격 호스트에서 변수/명령 대체를 확장하려면 작은따옴표 EOF)를 사용하십시오.

sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress" <<EOF
  command_one
  command_two
  command_three
EOF

별도의 파일을 사용하십시오.

파일.sh

command_one
command_two
command_three

그런 다음 다음과 같이 실행하십시오.

cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "$username@ipaddress"

SSH 터널을 사용하십시오.

sshpass -p "$password" ssh -f -L 3306:localhost:3306 "$username@ipaddress" sleep 300 # This will open a tunnel to the remote host and hold it open for 5 minutes
ssh -T "$username@ipaddress" 'command_one'
ssh -T "$username@ipaddress" 'command_two'
ssh -T "$username@ipaddress" 'command_three'

답변2

이 시도:

$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no $username@$ipaddress << EOF
command_one;
command_two;
command_three;
EOF

나는 위의 작업을 수행했고 훌륭하게 작동했습니다.

관련 정보