SSH 기능을 스크립팅할 때 "연결이 거부되었습니다" 오류

SSH 기능을 스크립팅할 때 "연결이 거부되었습니다" 오류

fish쉘을 사용하고 있으며 단축키 ssh기능은 다음과 같습니다.

function sshec2
  ssh -i $HOME/.ssh/key.pem -t -t "ubuntu@$argv[1]"
end

특정 AWS EC2 인스턴스로 SSH를 연결하기 위해 명령 파이프라인 흐름을 작성했습니다.

ec2-describe-instances --region us-west-2 --filter "tag:Name=test-box" |
grep 'INSTANCE' |
grep -E -m 1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|
head -1 |
sshec2

그러나 실행 시 함수가 작동하는 ssh: connect to host port 22: Connection refused동안 오류가 발생합니다 .sshec2sshec2 <ec2_public_ip>

제가 어리석은 부분을 놓쳤나요?

답변1

내가 올바르게 이해했다면 호스트 이름 목록( )을 생성하는 파이프라인이 있고 ec2-describe-instances … | grep … | grep …첫 번째 줄( head -1)을 선택하여 연결할 호스트 이름으로 사용하려고 합니다. 함수의 표준 입력에 호스트 이름을 전달 sshec2하고 인수 없이 함수를 호출합니다. 따라서 함수가 실행되면 $argv[1]은 비어 있으며 결국 ssh매개변수 -i, /home/dearrrfish/.ssh/key.pem, -t, 로 -t실행 됩니다 ubuntu@. 유효한 명령줄로 끝나고 ssh연결이 이루어지면 … | head -1파이프의 출력이 실행 중인 프로그램으로 파이프됩니다 ssh.

함수의 첫 번째 매개변수로 호스트 이름을 전달해야 합니다. 이를 수행하는 도구는 다음과 같습니다.명령 대체.

sshec2 (ec2-describe-instances --region us-west-2 --filter "tag:Name=test-box" |
        grep 'INSTANCE' |
        grep -E -m 1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' |
        head -1)

관련 정보