.ssh/config
동적 IP를 사용하는 EC2 인스턴스가 있는데 변경될 때마다 수정할 필요 없이 직접 연결하고 싶습니다 .
나는 IP를 쿼리 할 수 있습니다
aws ec2 describe-instances --filters 'Name=tag:Name,Values=MYTAG' --query 'Reservations[0].Instances[0].NetworkInterfaces[0].Association.PublicIp' --output text
ProxyCommand
이제 이 명령을 내 파일의 섹션 에 추가하고 싶지만 .ssh/config
몇 가지 오류가 발생합니다.
해당 호스트에 대한 섹션입니다.
Host ec2-instance
User ubuntu
IdentityFile my/pem/file.pem
ProxyCommand bash -c "host=$(aws ec2 describe-instances --filters 'Name=tag:Name,Values=MYTAG' --query 'Reservations[0].Instances[0].NetworkInterfaces[0].Association.PublicIp' --output text); ssh ${host}"
나는 솔직히 ProxyCommand
옵션이 어떻게 작동하는지 모르고 그것을 설명하는 것도 잘하지 못하는 man ssh
것 같습니다.man ssh_config
이것이 달성될 수 있는가?
답변1
ProxyCommand는원시 TCP 연결.전체 SSH 연결을 대체하지는 않습니다. 호출하는 데 사용되는 것을 자주 볼 수 있지만 ssh -W
이는 여전히 다른 SSH 시스템을 사용하여 원시 TCP 터널을 제공하는 것입니다.
따라서 귀하의 상황에서 ProxyCommand는 nc
또는 socat
또는 같은 간단한 "TCP 파이프" 앱을 실행해야 합니다 ncat
. TCP 연결에 stdin/stdout을 연결하는 모든 작업은 다음과 같습니다.
Host ...
ProxyCommand bash -c "host=...; nc $host %p"
Host ...
ProxyCommand bash -c "host=...; socat STDIO TCP:$host:%p"
~/.ssh/config의 모든 복잡한 항목을 별도의 스크립트로 옮기는 것이 좋습니다. 그러면 구성이 다음과 같이 보일 수 있습니다.
Host ...
ProxyCommand ~/bin/ec2-connect %h %p