글 시작에 앞서, 모든 ssh key 파일에는 600 권한을 주는 것이 권장됩니다.
chmod 600 #{키 파일 경로}
600 : 파일 소유자만 읽기/쓰기가 가능하고, 그룹 및 다른 사용자는 접근할 수 없도록
이전에 사용하던 AWS 서버와, 새롭게 사용할 OCI 서버의 config 를 분리하고 싶었다.
~/.ssh/config 여야 한다.~/.ssh/
├─ config ← 메인 (Include만 있음)
├─ config_aws ← aws 서버 config
├─ config_oci ← oci 서버 config
├─ AWS KEY/ ← aws 서버 키가 저장된 폴더
├─ OCI KEY/ ← oci 서버 키가 저장된 폴더
각 서버당 config 파일을 별개로 작성하고 싶어서 이런 구조를 선택하게 되었다.
~/.ssh/config 수정하기
Include config_*
해당 디렉터리에서 이름이 config_ 로 시작하는 모든 파일을 읽으라는 명령이다.
2-1. ~/.ssh/config_aws
aws 서버는 linux로 생성하여서 User가 ec2-user이다.
Host #{설정하고싶은 호스트명 작성}
HostName #{각 public IP}
User ec2-user
IdentityFile ~/.ssh/AWS\ KEY/...key ← 키 파일 경로
2-2. ~/.ssh/config_oci
oci 서버는 ubuntu로 생성하여서 User가 ubuntu이다.
Host #{설정하고싶은 호스트명 작성}
HostName #{각 public IP}
User ubuntu
IdentityFile ~/.ssh/OCI\ KEY/...key ← 키 파일 경로
경로에 띄어쓰기가 포함된 경우에는 \ (역슬래쉬) 가 들어가야 한다.
되도록이면 경로에는 한글 또는 띄어쓰기를 안 쓰는 것을 추천한다.
2-3. ~/.ssh/config_oci_db
오라클 클라우드는 서버 인스턴스와 db 인스턴스를 분리했다.
그래서 각 인스턴스에 접근하기 위해서는 key 파일이 별도로 필요하다.
서버 인스턴스에는 public ip를 붙여주었지만,
db 인스턴스는 외부에서 접속할 필요가 없으므로 서버 인스턴스를 통해서 접근하도록 설정했다.
※ 이 때, 반드시 서버 인스턴스와 db 인스턴스의 VCN이 같아야한다.
ProxyJump란 ?
IdentityFile 은 둘 다 Local 에 있어야 한다! ProxyJump 는 아래처럼 작성할 수 있다.Host oci-db
HostName #{각 public IP}
User ubuntu
IdentityFile ~/.ssh/OCI\ KEY/...key ← 키 파일 경로
ProxyJump #{서버 인스턴스의 호스트명}
위처럼 작성한 경우, ssh oci-db 로 한 번에 db 서버에 접속할 수 있다.
ssh + #{등록한 호스트명} 으로 간단하게 접속할 수 있다.
