이번에는 SSH 접속 포트를 바꿀... 생각이었는데 포기했구요, 설명만 할게요.
SSH는 뭐고 또 포트는 또 뭐냐구요?
SSH - 시큐어 셸, 떨어져 있는 컴퓨터에 안전하게 접속하자
오라클 클라우드에 빌린 컴퓨터에 접속할 때 ssh 라는 명령어를 썼었죠?
ssh는 다른 컴퓨터에 접속할 때 쓰는 프로그램이자 통신 규약입니다.
어떤 명령어를 입력했었는지 다시 볼까요?
ssh 사용자명@IPv4주소
포트 - 프로그램이 사용하는 연결 통로
컴퓨터에는 컴퓨터의 집주소를 나타내는 IP주소 (IPv4의 경우 192.168.0.1 형식) 외에도 포트라는 것이 존재합니다.
포트는 연결단자 같은 건데요, 어떤 프로그램이 IP로 네트워크에 접속할 때 사용하는 연결 통로입니다. 숫자이구요, 0 ~ 65536 까지의 범위입니다.
SSH의 포트는 22
SSH라는 프로그램 / 통신 규약은 너무나도 잘 알려진 것이어서, 정해진 포트를 사용합니다. 22번 포트에요.
그래서
ssh 사용자명@IPv4주소
는 사실 포트번호를 옵션으로 22로 준
ssh -p 22 사용자명@IPv4주소
와 같습니다.
많이 알려진 건 뭐다? 여기저기서 무작위로 되나 찔러본다~
저희는 이미 SSH 비밀키로 접속했으므로, 암호를 무작위로 입력해보는 데에는 면역이겠지만 그래도 하는 김에 바꿔줍...
...바꿔주려고 했는데 잠깐 생각해보니 문제가 있네요.
이번엔 새로 만든 계정에 바로 접속할 수 있게만 설정해주겠습니다. 사유는 제일 끝에 적어놨어요...
새로 생성된 계정에 SSH 비밀키로 접속하기
그 전에, 새로 생성했던 나만의 계정에도 SSH 명령어로 접속할 수 있게 준비해둡시다.
공개키를 다시 확인해서 복사해둡시다
먼저 /home/사용자명/.ssh/authorized_keys 에 공개키의 내용을 붙여넣어야 합니다.
가상 인스턴스를 생성할 때 붙여넣었던 공개키 기억나시죠?
잘 따라하셨다면, 지금은 C:\Users\사용자명\id_25519.pub 혹은 C:\Users\사용자명\id_25519.pub.txt 파일에 있을겁니다.
폴더 만들기: mkdir (make directory)
먼저 /home/사용자명/.ssh/ 폴더를 만듭시다.
mkdir ~/.ssh # 위 명령어는 다음과 같습니다. # mkdir /home/사용자명/.ssh
이제 "nano" 라는 텍스트 편집기를 열어, /home/사용자명/.ssh/authorized_keys 파일에 공개키의 내용을 붙여넣읍시다.
nano ~/.ssh/authorized_keys
편집기가 뜨면 공개키의 내용을 붙여넣은 뒤 [Ctrl + O, 엔터] 로 저장하고, [Ctrl + X] 로 닫습니다.
nano는 단축키가 화면 아래쪽에 나와있어서 편리합니다.
팁) Ctrl + V로도 붙여넣을 수 있지만, 화면에다 대고 마우스 우클릭을 하면 붙여넣기가 되는 경우가 많습니다.
ls로 파일이 잘 있나, nano를 다시 열어서 내용이 잘 들어갔나 확인해보시는 것도 좋습니다.
chmod: authorized_keys를 나만 읽을 수 있게 만들기
이제 authorized_keys를 나만 읽을 수 있도록 권한을 변경해야 합니다. 그렇지 않으면 SSH가 공개키를 안전하다고 생각하지 않아서 인정해주지 않거든요.
리눅스의 파일 권한 시스템에는 3가지 종류의 대상과 3가지 종류의 권한이 있습니다.
- 대상: 누가 작업을 할 수 있나요?
- user: 나
- group: 그룹
- others: 나도 아니고 그룹도 아닌 "아무나" 다른 사용자들
- 권한: 무엇을 할 수 있나요?
- r (read): 읽기
- w (write): 쓰기
- x (execute): 실행
ls -al 명령어로 방금 만든 파일의 권한을 확인해봅시다.
ls -al ~/.ssh/authorized_keys
실행 예시와 설명
ch@my-firefish-instance:~$ ls -al ~/.ssh/authorized_keys -rw-rw-r-- 1 ch ch 108 Aug 1 14:23 /home/ch/.ssh/authorized_keys #| #ㄴ-------제일 앞 글자는 폴더인지 여부구요 (폴더면 d 표시) # rw- # --- # | rw- # | --- # | | # | | r-- # | | --- # | | | # ㄴ사용자의 권한 (r읽기, w쓰기 가능) # | | # ㄴ 그룹의 권한 (r읽기, w쓰기 가능) # | # ㄴ others의 권한 (r읽기 만 가능)
좋아요, 이제 저 파일의 권한을 바꿉시다.
인터넷에 검색해보시면 "644"니 뭐니 하는 걸 입력하는 방법이 나올텐데, 이것도 가능한데 외우기 힘들죠. 이거 대신에 기억하기 쉽게 알파벳을 사용하는 방법을 애용하고 있습니다.
chmod u-wx,go-rwx ~/.ssh/authorized_keys
- u-wx: 나(user), 뺄셈 -> w쓰기 & x실행. 쓰기와 실행 권한을 제거합니다.
- go-rwx: 그룹(group) & others, 뺄셈 -> r읽기 w쓰기 x실행. 그룹과 others에 대한 권한을 전부 날려버립니다.
실행 예시
ch@my-firefish-instance:~$ chmod u-wx,go-rwx ~/.ssh/authorized_keys ch@my-firefish-instance:~$ ls -al ~/.ssh/authorized_keys -r-------- 1 ch ch 108 Aug 1 14:23 /home/ch/.ssh/authorized_keys ch@my-firefish-instance:~$
테스트: ssh로 내 계정에 바로 접속을 해보자
내 공개키를 새로 만든 계정에 등록했으니, 이제 새로 만든 계정으로 바로 ssh로 접속해봅시다.
예전에 실행했던 명령어가 기억나시나요?
ssh ubuntu@빌린컴퓨터의IPv4주소
였죠. 이제 새 명령줄 창을 열어서, ubuntu 부분을 내가 만든 사용자명으로 바꿔서 접속해봅시다.
ssh 만든사용자명@빌린컴퓨터의IPv4주소
성공했네요!
sudo ls 도 입력해서, 관리자 권한 명령어도 실행할 수 있나 확인해봅시다.
SSH 접속 포트 변경하기 -> 취소
아까 SSH는 22번 포트를 사용한다고 했죠? 구체적으로는, 빌린 가상 컴퓨터에서 "ssh daemon" 이라는 서버 프로그램이 22번 포트에서 접속을 기다리고 있는 것입니다.
"ssh daemon"의 설정을 변경해서 22 포트 대신에 23456 포트를 사용하도록 바꿔줍시다... 라고 하려고 했는데,
생각해보니 오라클 클라우드 쪽에서 관리하는 "opc" 계정이 있네요. 오라클쪽에서도 접속할 수 있어야 하므로, 포트변경은 지혜롭지 않은 것 같네요...
혹시 다른 환경에서 따라하고 계시고, 나는 포트 번호를 바꾸고싶다 라고 하신다면 인터넷을 검색해서 진행해주세요. (쓰던 내용이 버리기 아깝지만 어쩔 수 없죠...)
(하지 않음) ubuntu 계정 삭제
혹시 ubuntu 계정까지 지우시려면, sudo userdel ubuntu 를 실행하시면 됩니다. 이번에는 혹시 모르니 하지 않겠습니다. 자세한 건 인터넷을 참고해주세요.
참고자료: 여유가 되시고, 호기심이 동하신다면 아래 글도 확인해보세요.