SSHPass를 통해 원격 장치에 여러 명령을 전달하는 방법

SSHPass를 통해 원격 장치에 여러 명령을 전달하는 방법

일부 장치에서 원격 tcpdump를 실행하고 분석을 위해 파일을 내 로컬 컴퓨터에 저장하는 방법을 설정하려고 합니다(원격 장치에 파일을 저장한 다음 꺼내고 싶지 않습니다). 장치의 가용성 공간이 작습니다).

SSHPass가 설치된 내 컴퓨터(브리지 네트워크)에 Ubuntu VM을 설정하고 이를 사용하여 이 문제 해결 작업을 성공적으로 완료했습니다. Ubuntu 컴퓨터의 터미널에서 아래 표시된 구문을 사용했습니다.

sshpass -p <password> ssh -c aes256-ctr <username>@<remote-ip> -p <remote-access-port> "tcpdump -i eth1 -s 0 -nnn -vvv -w - port 53" \ > /home/drew/Desktop/DNS_Capture.pcap

위 명령을 실행한 후 내 세션이 연결되고 원격 장치에서 tcpdump를 실행하여 DNS 트래픽을 보기 시작했습니다. 이것은 정확히 내가 원하는 Ubunut VM 데스크탑에 있는 파일에 직접 캡처됩니다.

그러나 다른 장치에서는 SSH 세션의 기본 로그인 페이지가 장치의 Linux 셸이 아니라 다른 디버그 셸입니다. 실제로 CLI를 통해 다른 장치에서 프로세스를 실행하려면 다음을 수행합니다.

ssh <username>@<remote-ip> -p <remote-access-port>
<password> (*at prompt for password after connection)
sh
tcpdump -i eth5.1 -s 0 -nnn -vvv port 53

위에서 볼 수 있듯이 "sh"를 시작하여 장치에 적합한 Linux 셸에 놓았습니다. 위와 같이 필요에 따라 캡처를 실행할 수 있지만 문제는 해당 출력을 .pcap 파일에 저장할 수 없다는 것입니다. 이 문제를 해결하려고 노력하는 동안 다른 장치에서 작동하도록 다음을 시도했습니다.

sshpass -p <password> ssh <username>@<remote-ip> -p <remote-access-port> "sh; tcpdump -i eth5.1 -s 0 -nnn -vvv -w - port 53" \ > /home/drew/Desktop/DNS_Capture.pcap

이 포럼의 다른 질문에서 사람들이 명령 이스케이프 문자(예: ";")를 사용하여 여러 명령을 성공적으로 전달했다는 사실을 발견했습니다. 이런 식으로 설정하면 첫 번째 명령도 적용되지 않는 것 같습니다. 올바른 Linux 셸에 로그인했는지 확인하기 위해 테스트로 다음을 입력하더라도 두 번째 명령이 실행되지 않고 프롬프트에서 여전히 기본 로그인 페이지에 있다는 메시지가 표시됩니다.

sshpass -p <password> ssh <username>@<remote-ip> - <remote-access-port> "sh; ifconfig"

답변1

사용자 @Jesse_b는 "관련성"으로 표시된 게시물에서 정확합니다.

sshpass의 여러 명령

나는 이전에 그 기사를 여러 번 보았지만 여기 문서의 구문이 형편없다는 것이 밝혀졌습니다. heredoc을 사용하여 shtcpdump .....명령을 하나의 sshpass.

이에 대한 답변으로 "관련:..."을 표시하는 방법을 찾을 수 없어서 죄송합니다. 가능하다면 이러한 게시물을 엉망으로 만들지 않도록 교육을 받고 싶습니다.

관련 정보