다양한 AWS 계정을 사용하여 SSH에 대한 프록시 설정 저장

다양한 AWS 계정을 사용하여 SSH에 대한 프록시 설정 저장

여러 Amazon 계정에 걸쳐 EC2 인스턴스(가상 머신)를 관리합니다. 이러한 컴퓨터에는 반드시 도메인 이름이 있을 필요는 없습니다. 일반적으로 IP 주소를 통해 연결합니다.

각 AWS 계정에는 연결하는 데 사용되는 자체 배스천 서버가 있습니다. 컴퓨터에 연결할 때 명령줄에서 SSH 터널에 대한 설정을 지정해야 하기 때문에 이것이 귀찮습니다. 머신에 도메인 이름이 있으면 파일 ~/.ssh/config에 터널을 구성하기 만 하면 됩니다. 대신 이 작업을 수행해야 합니다. 프록시 IP 주소는 사용 중인 AWS 계정에 따라 변경됩니다.

ssh -o ProxyCommand="ssh -W %h:%p [email protected]" [email protected]

프록시 명령(및 사용자 이름)을 지정할 필요가 없도록 SSH를 구성하는 좋은 방법이 있습니까? 더 의미가 있다면 bash 별칭과 같은 다른 솔루션을 사용하고 싶습니다.

답변1

이것이 바로 당신에게 필요한 것입니다 ~/.ssh/config. 문제가 무엇인지는 확실하지 않지만 다음과 같습니다.

Host proxy1
  Hostname 1.2.3.4
  User ubuntu

Host target1
  Hostname 172.17.1.2
  ProxyCommand ssh -W %h:%p proxy1
  User ubuntu

그런 다음 을 사용하여 연결하면 됩니다 ssh target1. 물론 단일 프록시를 사용하여 더 많은 대상을 일치시키거나, 다른 별칭을 정의하거나, 와일드카드( Host 172.17.1.*)를 사용하여 전체 IP 블록을 일치시킬 수 있습니다.

답변2

앞서 언급한 .bashrc 옵션과 같습니다. 뭔가 다른 경우:


원하는 이름을 포함하도록 호스트 파일을 수정하세요.

sudo vi /etc/hosts

SSH 스크립트가 포함된 여러 가지 텍스트 파일을 만듭니다.
텍스트 파일을 만들었습니다.:

sudo echo "ssh -o ProxyCommand=\"ssh -W %h:%p [email protected]\" " > your-ssh-file

실행 가능하게 만들어라
sudo chmod +x your-ssh-file

다음 명령을 사용하여 생성한 폴더의 파일을 실행합니다.
./your-ssh-file

답변3

내 파일에 다음 별칭을 추가했습니다 .bashrc.

alias ssh-foo='ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu <FOO_BASTION_IP>" -l ubuntu'
alias ssh-bar='ssh -o ProxyCommand="ssh -W %h:%p -l ubuntu <BAR_BASTION_IP>" -l ubuntu'

이제 연결 명령은 매우 간단합니다.

ssh-foo <FOO_INSTANCE_IP>

별칭은 scp비슷하지만 사용자 이름을 다른 방식으로 제공해야 합니다.

alias scp-bar='scp -o ProxyCommand="ssh -W %h:%p -l ubuntu <BAR_BASTION_IP>" -o User=ubuntu'

관련 정보