오라클 Cloud shell 을 이용한 오라클 클라우드(OCI) 접속

Share

Last Updated on 3월 7, 2022 by Jade(정현호)

브라우저 기반 가상 터미널

오라클 클라우드는 2020년 2월 11일 Cloud Shell 을 새롭게 공개하였습니다. 

Cloud Shell은 오라클 클라우드(Oracle Cloud) 콘솔(웹)에서 접속할 수 있는 브라우저 기반 무료 터미널 입니다. 



Cloud shell 은 아래와 같이 오라클 클라우드 웹 콘솔 상단 우측, 리전명 오른편 아이콘을 클릭하여 사용 할 수 있습니다.




접속을 시도하면 처음에는 사용자 홈 디렉토리를 마운트 하기 위하여 아래와 같이 로딩이 이루어지게 됩니다.




화면 하단에 아래와 같이 접속이 완료 된 것을 확인 할 수 있으며, 5GB 용량제한이 있는 사용자 홈이 제공되게 됩니다.




오른쪽에는 최소화, 최대화, 재시작, 닫기 버튼이 존재 합니다.


        

Oracle Cloud Shell 의 특징

OCI Cloud Shell 은 20분간 사용하지 않으면 세션 종료 됩니다.

Public IP를 가진 Oracle Cloud OCI 등에 접속이 가능하지만 외부에서는 Cloud Shell 로 접속이 불가능 합니다.

그래서 Oracle Cloud 외 다른 Cloud Iaas 나 서버로도 접속이 가능하며, 저는 직접적으로 접속이 불가능한 환경에서는 Oracle Cloud Shell 을 통해 AWS 나 네이버 클라우드(NBP) 나 Cafe24 VPS 등 다른 시스템 접속 에도 활용 하고 있습니다.

가상(VM) 형태의 Oracle Linux 이지만 일반적인 형태의 많은 명령어는 사용할 수 없습니다(명령어 사용이 제한적)

계속 혹은 주기적으로 클라우드 쉘을 사용한다는 기준에서 파일을 계속 유지 되는 것으로 확인 됩니다.
           

OCI 접속을 위한 SSH 키 설정

Oracle Cloud Shell 을 처음 접속하고 가장 큰 고민스러움은 Oracle 이나 다른 클라우드 IaaS 의 경우도 요즘은 대부분 비밀키(개인키)를 소유하고 있어야 SSH 로 접속이 하다는 것 입니다.

그래서 클라우드 쉘에서 사용중인(소유한) 오라클 클라우드의 컴퓨트 인스턴스나 다른 클라우드의 VM 인스턴스에 접속하기 위해서는 사전에 사용하던 개인키를 가져오거나, 아니면 클라우드 쉘에서 계정을 생성하여 해당 계정의 공개키를 접속하려는 서버에 등록하는 사전 작업이 필요하게 됩니다.

만약 컴퓨트 인스턴스에 생성된 계정을 그대로 사용하려면 해당 계정의 개인키를 가져와서 클라우드 쉘에 업로드가 필요 합니다.

클라우드 쉘에서 파일 다운로드업로드 를 지원하며 해당 기능은 클라우드 쉘 서비스 런칭시에는 없었으나 향후에 추가 된 기능 입니다. 



위의 방법으로 필요시 개인키를 업로드 하여 접속할 수 있습니다.
        

접속용 별도 계정 생성

포스팅에서는 별도의 cloud shell 에서 접속을 하기 위한 별도의 OS 계정을 만들어서 사용하는 방식을 사용 하도록 하겠습니다.
(방법은 절대적인 것은 아니며, 원하시는 방법이나 편한 방법으로 사용하시면 됩니다)



CentOS 리눅스 기준으로 OCI 인스턴스에서 사용하는 기본 생성 계정명은 opc 입니다.

opc 계정은 sudo 권한을 가진 계정 이기 때문에 , sudo 권한을 가진 유저가 외부에서 자유롭게 접속이 되는 부분이 보안상 우려 되는 점이 있어서 포스팅에서는 별도의 계정을 사용 하기로 했습니다.
(꼭 이렇게 하지는 않아도 됩니다)

그림 으로 표현 하면 아래와 같은 형태가 될 것 입니다.



별도로 생성한 계정으로 접속 후에 root 유저나 ocp 유저로 switch 하는 형태로 하려고 하며 포스팅에서는 root 유저로 switch 를 하기 위해서 root 유저의 비밀번호 생성 부터 진행 하도록 하겠습니다.


1. root 유저 비밀번호 생성

먼저 접속 하려는 서버의 root 유저에 대해서 비밀번호를 생성하겠습니다


[root]# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully


2. 접속용 유저 생성 및 authorized_keys 생성

(유저명 등은 모두 예시 입니다)


[root]# useradd test


test$ mkdir .ssh
test$ chmod 700 .ssh
test$ cd .ssh

test .ssh$ touch authorized_keys
test .ssh$ chmod 600 authorized_keys


3. SSH 키 생성

이제 CloudShell 에 접속하여 SSH-Key 를 생성 하도록 하겠습니다.

cloud$ ssh-keygen -t rsa -b 4096
[물어보는 모든 질문에 엔터를 입력]


Generating public/private rsa key pair.
Enter file in which to save the key (/home/cloud/.ssh/id_rsa): [엔터]
Created directory '/home/cloud/.ssh'.
Enter passphrase (empty for no passphrase): [엔터]
Enter same passphrase again: [엔터]
Your identification has been saved in /home/cloud/.ssh/id_rsa.
Your public key has been saved in /home/cloud/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxx cloud@hostname
The key's randomart image is:
+---[RSA 4096]----+
| .. o.o+.o..|
|. oooo+.o o+.o + |
|.o+.oo+.oo+.oo+.o|
|.+o+.oo+.oo+.oo+ |
|.o+.oo+.oo+.oo+.o|
|.o+.oo+.oo+.o |
|++. . o . |
|oo . . |
| …… |
+----[SHA256]-----+

위와 같이 키를 생성 하면 id_rsa, id_rsa.pub 2개의 파일이 생성 됩니다. 



4. 공개키(pub) 복사(클립보드)

클라우드 쉘에서 이전 단계에서 생성한 공개키의 문자열을 복사 합니다.

cloud$ cd .ssh
cloud .ssh$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA ……………..
……………………………………………………
…………………………………………..

==> id_rsa.pub 파일 안의 키 문자열을 모두 그대로 복사(클립보드 복사) 합니다.


5. 공개키(pub) 추가

별도 접속을 위해 생성한 OS 계정의 authorized_keys 파일에 이전 단계에서 복사한 공개키 문자열을 붙여 넣습니다.
(vi 나 nano 등 편한 편집기로 파일을 편집 하시면 됩니다)


[test]$ cd .ssh
[test .ssh]$ vi authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA ……………..
……………………………………………………
…………………………………………..

:wq!
-> 저장


6. authorized_keys Permission 변경

[test .ssh]$ chmod 600 authorized_keys

authorized_keys 파일의 퍼미션은 600 이어야 정상 동작 합니다.
        

접속 테스트

모든 작업이 완료 되었다면 클라우드 쉘에서 아래와 같이 계정명@IP주소(접속할 서버IP) 를 입력하여 접속이 되는지를 확인 하도록 합니다.

cloud .ssh$ ssh test@ip

접속 후 위에서 root 유저의 비밀번호를 설정하였기 때문에 su - 를 통해 사용하면 됩니다.

cloud .ssh$ su - 
Password: [패스워드입력]

[root]#
         

Config 파일을 활용한 SSH 접속

접속 대상이 많고 계정이 다양하다면, 접속 할때 마다 매번 IP 와 계정명 등을 확인을 해야 하는 것이 번거로울 수 있습니다.

그래서 접속대상이 많고 할 때는 config 파일을 생성해서 접속하는 것도 한가지 도움이 되는 방법 입니다.

클라우드 쉘로 접속 후에 아래와 같이 config 파일을 생성하도록 하겠습니다.

cloud$ cd .ssh
cloud .ssh$ vi config


.ssh 디렉토리 아래 config 파일에 아래와 같은 형식으로 내용을 입력 하겠습니다.

- Host 는 접속하고자 하는 alias 형태이고
- Hostname 은 접속 서버의 IP나 도메인명
- User  접속 대상 유저 명
- IdentityFile 개인키 위치 및 파일명

Host oci-inst4
HostName xxx.xxx.xxx.xxx
User test
IdentityFile ~/.ssh/id_rsa


내용을 입력 후 아래와 같이 접속을 하면 됩니다.

cloud .ssh$ ssh oci-inst4
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

New release '20.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Wed Dec 16 14:32:39 2020 from 
test@ $
            

정리

사용하는 네트워크 환경 상 SSH(TCP:22) 가 외부로 접속이 안되는 상황 이거나, 터미널 프로그램이나 ssh-key 가 별도로 없는 PC 환경에서 바로 컴퓨트 인스턴스에 접속 해야 할 경우 등 여러 상황에서 유용하게 사용할 수 있는 서비스 라고 생각 됩니다.

오라클 클라우드 이외 AWS 클라우드나 국내  VPS 의 SSH 에도 접속이 가능하기 때문에 사용하기에 따라서 유용하게 사용할 수 있을 것 같습니다.

다만 포스팅에서 언급한 것처럼 요즘 보통의 경우 SSH 접속시 Key 기반으로 접속 하기 때문에 접속 하기전에 미리 접속을 위한 Key 전송이나 설정은 필요 할 것으로 생각 됩니다.


연관된 다른 글

 

 

      

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x