# 오라클 클라우드(OCI) 서버 구축하기 - 추가 사용자 생성

- Author: @DevMinGeonPark
- Published: 2021-11-11
- Updated: 2021-11-23
- Source: http://blex.me/@DevMinGeonPark/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9Coci-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-%EC%B6%94%EA%B0%80-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%83%9D%EC%84%B1
- Tags: oraclecloud

---

> 목차
> 1. [구획 생성](https://blex.me/@DevMinGeonPark/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9Coci-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-%EA%B5%AC%ED%9A%8D-%EC%83%9D%EC%84%B1)
> 2. [네트워크 설정](https://blex.me/@DevMinGeonPark/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9Coci-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-%EA%B0%80%EC%83%81%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%83%9D%EC%84%B1)
> 3. Instance 생성
> 4. Nginx 설치
> 5. MySQL 8 설치
> 6. 방화벽 설정

**에러를 발견해서 다시 작성합니다.**
공개키방식으로 인증하는걸 채택하면서 생긴 문제가 추가 사용자로 접근하는걸 할줄 몰랐다는겁니다.  
이번에 알아보면서 추가 사용자를 생성하고 접근할 수 있는 방법을 익혀서 이렇게 기록으로 남기게 되었습니다.  
이 주제는 사진으로 찍게되면 모자이크 처리해야할 부분이 많아 보여 명령어 위주로 작성합니다.  

### root passwd 설정하기
초기 root 패스워드를 설정해야합니다.
초기 인스턴스 생성 때 활용했던 방법을 통해 opc에 접근하고
sudo su로 루트로 진입합니다.  
아래의 방법으로 패스워드를 설정합니다.

```bash
opc@Instance-name$ sudo su
root@Instance-name# passwd
```

### 유저 생성 및 authorized_keys 생성
먼저 oracle-cloud - 컴퓨트 - 인스턴스 - 인스턴스 세부정보로 가셔서 아래로 내려가서 콘솔접속에서   
Cloud Shell을 실행하세요.

* {value} 안의 값은 변경가능한 값입니다.

```bash
user-name@Instance-name:path$ useradd {userName} && adduser {userName}
user-name@Instance-name:path$ cd .. && cd {userName} && mkdir .ssh
user-name@Instance-name:path$ chmod 700 .ssh && cd .ssh
```

### Server 측 SSH키 생성
서버측에서 먼저 ssh키를 생성합니다.  
위에서 저희는 root passwd를 설정했습니다. 웹에서 Oracle CloudShell 을 켜서 루트로 접근합니다.  

```bash
> login : root
> passwd : 위에서 설정한 passwd
> root@Instance-name# ssh-keygen -t rsa -b 4096
```
ssh-keygen은 git이 있거나 리눅스에서는 defult로 설치되어있습니다.
이제 방금 만든 key를 확인합니다.

```bash
> root@Instance-name# cat /.ssh/id_rsa.pub
> ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA …………………………………………………………………
> …………………………………………………………………… = User-DaskTop-ID.local
```

여기서 반드시 ssh-rsa부터 여러분의 유저 아이디.local까지를 다 복사하셔야됩니다.  
이제 서버측은 잠시 나두고 client로 가보도록하죠.

### Client 측 SSH키 생성
Client라고 표현했지만 쉽게 말하면 여러분들의 로컬 컴퓨터입니다.  
제 경우에는 주로 맥북으로 작업하지만, 맥은 최초 인스턴스 생성 때 ssh키를 넣어서 생성했으니 진행할 필요가없습니다.  
그래서 윈도우 컴퓨터로 진행하고있습니다.
**참고로 윈도우 컴퓨터에서의 Console 접근 환경은 WSL2 입니다.**
WSL2 설정은 다음에 글로 작성해서 다루도록 하겠습니다.

> **실습 진행 중 윈도우 컴퓨터 환경**  
> Windows 10 Pro  
> WSL2 Ubuntu LTS + Windows Terminal  
> zsh + oh my zsh  
> installed git  

```bash
> user-name$ sudo ssh-keygen -t rsa -b 4096  
> user-name$ cd defult-path/.ssh  
> user-name$ cat id_rsa.pub  
> user-name$ echo >> {Server측 ssh-key} authorized_keys  
> user-name$ chmod 600 authorized_keys  

```
먼저 여기서 생성될 때 defult경로를 잘 보고 그 경로의 ssh에 접근해야합니다.
그리고 cat을 통해 id_rsa.pub 확인합니다. 이건 복사해두었다가 서버 측에 작성할 예정입니다.
마지막으로  authorized_keys 파일을 생성하고 600으로 권한을 변경합니다.  

**authorized_keys 생성 예시**
```bash
vim authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA …………………………………………………………………
> …………………………………………………………………… = User-DaskTop-ID.loca
```

### Server 측 authorized_keys 생성
다시 서버로 돌아갑니다.  
먼저 아까 만든 유저로 로그인하여  ssh 폴더로 접근합니다.

```bash
> user-name@Instance-name$ cd .ssh
> user-name@Instance-name$ vim authorized_keys
> user-name@Instance-name$ {client측 ssh-key} 
> user-name$ chmod 600 authorized_keys
```
ssh폴더에서 client측에서 복사해둔 ssh키를 입력하고 authorized_keys로 파일을 생성합니다.  
그리고 마지막으로 600권한을 주게되면 실행 준비 완료입니다.  

### 접속 테스트
Client측에서 접근을 시도합니다.
```bash
> user-name@Instance-name$ ssh user-name@public-ip-address
> # OR
> user-name@Instance-name$ ssh -i defult-path/.ssh/is_rsa.pub user-name@public-ip-address
```

### 정리
정리하자면,
1. root passwd 설정이 되어야함.
2. cloud shell을 통해 세팅해야함.
3. server측에서 계정을 만들고 ssh키를 생성해야하며, authorized_keys를 만들어 접속하는 계정의 ssh키를 작성해야함.
4. client측에서 ssh키를 생성하고 authorized_keys를 만들어 server측 계정에서 받은 ssh키를 입력해야함.
5. 결론적으로 server ( ssh, authorized_keys ), client ( ssh, authorized_keys )키가 완전하게 대칭되어야 접근가능.
