여러 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'