목차
에러를 발견해서 다시 작성합니다.
공개키방식으로 인증하는걸 채택하면서 생긴 문제가 추가 사용자로 접근하는걸 할줄 몰랐다는겁니다.
이번에 알아보면서 추가 사용자를 생성하고 접근할 수 있는 방법을 익혀서 이렇게 기록으로 남기게 되었습니다.
이 주제는 사진으로 찍게되면 모자이크 처리해야할 부분이 많아 보여 명령어 위주로 작성합니다.
root passwd 설정하기
초기 root 패스워드를 설정해야합니다.
초기 인스턴스 생성 때 활용했던 방법을 통해 opc에 접근하고
sudo su로 루트로 진입합니다.
아래의 방법으로 패스워드를 설정합니다.
opc@Instance-name$ sudo su
root@Instance-name# passwd
유저 생성 및 authorized_keys 생성
먼저 oracle-cloud - 컴퓨트 - 인스턴스 - 인스턴스 세부정보로 가셔서 아래로 내려가서 콘솔접속에서
Cloud Shell을 실행하세요.
- {value} 안의 값은 변경가능한 값입니다.
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 을 켜서 루트로 접근합니다.
> login : root
> passwd : 위에서 설정한 passwd
> root@Instance-name# ssh-keygen -t rsa -b 4096
ssh-keygen은 git이 있거나 리눅스에서는 defult로 설치되어있습니다. 이제 방금 만든 key를 확인합니다.
> 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
> 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 생성 예시
vim authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABA …………………………………………………………………
> …………………………………………………………………… = User-DaskTop-ID.loca
Server 측 authorized_keys 생성
다시 서버로 돌아갑니다.
먼저 아까 만든 유저로 로그인하여 ssh 폴더로 접근합니다.
> 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측에서 접근을 시도합니다.
> 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
정리
정리하자면,
- root passwd 설정이 되어야함.
- cloud shell을 통해 세팅해야함.
- server측에서 계정을 만들고 ssh키를 생성해야하며, authorized_keys를 만들어 접속하는 계정의 ssh키를 작성해야함.
- client측에서 ssh키를 생성하고 authorized_keys를 만들어 server측 계정에서 받은 ssh키를 입력해야함.
- 결론적으로 server ( ssh, authorized_keys ), client ( ssh, authorized_keys )키가 완전하게 대칭되어야 접근가능.
Ghost