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

Last Updated on 12월 17, 2020 by 태랑(정현호)



브라우저 기반 가상 터미널



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접속을 위한 비밀키(개인키)를 생성



Oracle Cloud Shell 을 처음 접속하고 가장 큰 고민스러움은 Oracle 이나 다른 클라우드 Iaas 의 경우도 비밀키(개인키)를 소유하고 있어야 접속이 가능합니다.



위에서 설명된 내용처럼 외부에서는 Oracle Cloud Shell 을 접속할 수 없습니다
그러므로 키를 업로드 형태로 전송 해 줄 수 없다는 의미 입니다.
그럼 결국 Cloud Shell 에서 접속해서 키를 가져와야 합니다


centos 기준으로 기본 생성 계정은 opc 입니다.

이 계정외에 별도의 cloud shell 을 위한 계정을 만들어서 사용하는 방식을 사용 했습니다.


opc 계정은 sudo 권한도 가진 계정 이기에, sudo 권한 유저의 키를 다른곳에 둬야 한다는 부분 때문에 별도의 계정을 사용 하기로 했습니다.









root 유저 비밀번호 생성

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

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







# 유저 생성 및 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







# 키 생성


이제 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개의 파일이 생성 됩니다. 








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

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

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









공개키(pub) 추가

접속 하고자 하는 서버에서 authorized_keys 파일을 vi 로 편집하여 키를 추가 합니다


[test]$ cd .ssh

[test .ssh]$ vi authorized_keys

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

:wq!
-> 저장







authorized_keys Permission 변경

[test .ssh]$ chmod 600 authorized_keys






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

[test .ssh]$ chmod 600 authorized_keys








접속 테스트



CloudShell 에서 생성한 공개키(pub)를 접속하고자 하는 서버에 추가 하였다면 접속을 시도해 봅니다


설정이 정상적으로 되었다면 아래와 같이 접속이 되는걸 확인할 수 있습니다.


cloud .ssh$ ssh test@ip







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



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

[root]#_








Config 파일을 활용한 SSH 접속



접속 대상이 많고 계정이 다양하다면 매번 접속대상의 ip 와 계정명등을 확인을 해야 할 수도 있습니다.



접속대상이 많고 할 때는 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 환경에서 바로 사용해야할 경우 등 여러 상황에서 유용하게 사용할 수 있는 유용한 서비스 라고 생각 됩니다.




연관된 글

 

답글 남기기