AWS에서 발판 서버에서 프라이빗 서브넷 EC2로 peco를 사용하여 SSH
발판 서버는 EIP로 글로벌 IP를 할당하면 됩니다만, 프라이빗 서브넷에 배치한 EC2들, 게다가 AutoScaling에 의해 IP가 부정한 것에 간단하게 SSH하고 싶었으므로, 조금 스크립트를 짜 보았습니다.
예상되는 AWS 구성
프라이빗 서브넷의 EC2에는 직접 SSH가 불가능
한 번에 2단 SSH를 위한 명령
다음 기능을 ~/.config/fish/config.fish
에 추가하십시오.
fish 쉘의 function을 정의하고 있으므로, bash나 zsh의 분은 적절히 읽어 주세요.aws
명령은 --profile
또는 --region
를 명시하고 있으므로 여기도 적절하게 변경하십시오.
발판 서버와 대상 서버에서 SSH 키가 다른 경우 첫 번째 $key
에 발판 키, 두 번째 $key
에 대상 서버의 SSH 키를 지정하도록 다시 씁니다.
function ec2-ssh-myaws
echo "ec2-user" | read -l user
echo "~/.ssh/myaws.pem" | read -l key
aws --profile myaws ec2 describe-instances --region ap-northeast-1 --output json --filters "Name=network-interface.group-name,Values=Bastion" | jq -r '.Reservations[].Instances[] | .PublicIpAddress' | read -l bastion
echo "bastion server $bastion"
aws --profile myaws ec2 describe-instances --region ap-northeast-1 --output json --filters "Name=instance-state-code,Values=16" | jq -r '.Reservations[].Instances[] | [.Tags[] | select(.Key == "Name").Value][] + "\t" + .InstanceType + "\t" + .PrivateIpAddress + "\t" + .Platform' | awk '{if ($4 != "windows") printf "%-45s %-15s %-10s\n",$1,$2,$3}' | sort | peco | command awk '{print $3}' | read -l host
echo "target server $host"
ssh -o ProxyCommand="ssh -i $key -p 22 $user@$bastion -W $host:22" -i $key -p 22 $user@$host
end
추가가 끝나면 다음과 같이 function을 호출하면 프라이빗 서브넷에 있는 EC2 목록이 표시되어 선택한 서버로 연결됩니다.
ec2-ssh-myaws
function이하는 일에 대한 설명
function ec2-ssh-myaws
echo "ec2-user" | read -l user
echo "~/.ssh/myaws.pem" | read -l key
aws --profile myaws ec2 describe-instances --region ap-northeast-1 --output json --filters "Name=network-interface.group-name,Values=Bastion" | jq -r '.Reservations[].Instances[] | .PublicIpAddress' | read -l bastion
echo "bastion server $bastion"
aws --profile myaws ec2 describe-instances --region ap-northeast-1 --output json --filters "Name=instance-state-code,Values=16" | jq -r '.Reservations[].Instances[] | [.Tags[] | select(.Key == "Name").Value][] + "\t" + .InstanceType + "\t" + .PrivateIpAddress + "\t" + .Platform' | awk '{if ($4 != "windows") printf "%-45s %-15s %-10s\n",$1,$2,$3}' | sort | peco | command awk '{print $3}' | read -l host
echo "target server $host"
ssh -o ProxyCommand="ssh -i $key -p 22 $user@$bastion -W $host:22" -i $key -p 22 $user@$host
end
ec2-ssh-myaws
aws
명령으로 가져 오기 끝에
이 설정을 사용하여 편하게 하기 시작한 화살촉에 다음과 같은 기사가 공개되었습니다.
SSH 불필요한 시대가 올까요? AWS Systems Manager 세션 관리자가 출시되었습니다!
AWS Systems Manager 세션 관리자가 있다면 이번 설정이 필요하지 않을 수 있습니다.
참고 링크
Reference
이 문제에 관하여(AWS에서 발판 서버에서 프라이빗 서브넷 EC2로 peco를 사용하여 SSH), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoskeoka/items/ad00aec94e9895edd4fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)