ssh ProxyCommand 옵션 이해하기

Tae-Kyun Kim·2022년 4월 3일
0

현상

ssh -o ProxyCommand="ssh -i ~/.ssh/XXX.pem -W %h:%p ubuntu@XXX.XXX.XXX.XXX" -i "~/.ssh/XXX.pem" ubuntu@XXX.XXX.XXX.XXX
Warning: Identity file /MY/PATH/.ssh/NAME.pem not accessible: No such file or directory.
Warning: Identity file /MY/PATH/.ssh/NAME.pem not accessible: No such file or directory.
ubuntu@XXX.XXX.XXX.XXX: Permission denied (publickey).
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port XXXXX

문제

  1. NAME.pem key 없음
  2. Permission denied (Publickey)
  3. key_exchange_identification: Connection closed by remote host
  4. Connection closed by UNKNOWN port XXXXX

명령어 이해

ssh -o ProxyCommand="ssh -i ~/.ssh/XXX.pem -W %h:%p ubuntu@BBB.BBB.BBB.BBB" -i "~/.ssh/XXX.pem" ubuntu@CCC.CCC.CCC.CCC

-o: 옵션

-i: identity_file

-W: host:post

-o ProxyCommand

  • 간혹 외부에서 접근할 수 없는 내부망에 서버가 구축된 경우가 있음. 이 서버에 접속하기 위해서는 외부를 향해 열려 있는 서버에 ssh 접속
  • Proxy?

    클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템
    이나 응용 프로그램

→ B 서버를 중계 역할로 써서 C서버로 연결하고 있음

NAME.pem 없음

  • 당연히 안 만들어주었으니 만들어야함

해결

  • 다음과 같이 서버에 authorized_keys에 등록된 pem key가 있을 것
-----BEGIN OPENSSH PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END OPENSSH PRIVATE KEY----- 
  • 해당하는 key를 자신의 로컬 환경에서 ~/.ssh/XXX.pem 으로 생성한 후 chmod 400 으로 권한 설정 변경해줌
    • 권한 설정 변경 안할 시 ssh 명령어 접속할 때 오류 발생
    • BEGIN부터 END를 포함한 모든 줄 복사해야함

참고자료

ProxyCommand를 이용한 SSH 중계 접속

0개의 댓글