favicon

Jayden { do: smite }

230103(화)

🎄 성장일지 3.1

행복한 이기주의자(웨인 다이어)의 내용에 자극받아 시작하는 소박한 성장기록

살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?<br/> 성장하고 있는 것이 살아 있는 것이다.<br/> 생명의 유일한 증거는 성장이다!

🌳 키워드 (1.0)<br/> 최대한 간단하게 정리, 추후에 보면서 스스로 설명<br/> 🍉 경험 위주로 (2.0)<br/> 단순 정보를 전달하기보다 무엇을 배웠고 어떻게 해결했는지 짧고 간단하게 작성<br/> ❄️ 정해진 템플릿에 맞춰서 (3.0)<br/> 키워드, 경험 모두 좋다. 다만 매일 작성하기로 마음 먹은만큼 핵심만 간결하게 정리할 수 있게 템플릿을 작성 (3.1) 230102부터 시작되는 학습에 관한 내용 추가

🔑 오늘의 키워드

가상 머신(Virtual Machine)과 우분투 리눅스(Ubuntu Linux)

  • 가상 머신: 물리적 컴퓨터의 디지털 버전. 우리가 사용하는 현실의 컴퓨터가 있고 가상으로 그 컴퓨터를 구현한 것이 가상 머신이다. 가상 머신에서 가상 머신을 돌리는 것도 가능하다.(비효율적이지만)
    • 한편, JVM(JAVA Virtual Machine)처럼 특정 언어로 쓰여진 프로그램을 돌리기 위한 인터프리터를 가리키기도 한다.
  • 우분투 리눅스
    • 리눅스: 윈도우, 맥 다음으로 가장 많이 사용되는 운영체제(OS). 사실상 무료이다.(자유롭게 공유하고 개발이 가능하다. 굉장한 장점.) 유닉스를 기반으로 한다.
    • 우분투: 리눅스의 여러 배포판 중 하나. 개인용, 데스크탑 환경에 최적화되어있으며 마찬가지로 자유 소프트웨어에 기반한다.(무료라는 얘기)

SSH(Secure SHell)

  • ssh: 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 의미한다. 즉, 네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해서 서로 통신할 때 보안 상 안전하게 통신하기 위해 사용하는 프로토콜이다.

    • 참고) 기존 원격 접속은 텔넷(Telnet)이라는 방식을 사용했다. 그러나 암호화를 제공하지 않아 보안상 취약하다는 단점이 존재하여 SSH를 사용한다.
    • ssh의 작동원리
      • 사용자(클라이언트)와 서버(호스트)는 각각의 키(KEY)를 보유하고 있다. 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받을 수 있다. 키를 생성하는 방식은 대표적으로 대칭키비대칭키가 있다.
  • 비대칭키 방식

    • 가장 먼저 사용자와 서버가 서로의 정체를 증명해야 한다. 이 때 사용되는 것이 비대칭키 방식이다. 서버 또는 사용자가 키 페어(키 쌍)을 생성한다. 이 때, 키 페어는 공개키와 개인키로 이루어진 한 쌍을 의미한다. 보통 공개키는 .pub, 개인키는 .pem의 파일 형식을 갖는다.
    • 예시) 사용자가 키 페어를 생성하여 공개키를 서버에 전송한다. 서버는 공개키를 통해 어떠한 값을 생성하고 사용자에게 보낸다. 이 값은 공개키와 태생이 같은(키 페어인) 개인키를 통해서만 알 수 있다. 사용자는 개인키를 통해 이 값을 알아내고 값을 서버에 보낸다. 서버는 본인이 생성했던 값과 사용자가 보낸 값을 비교한다. 이 둘이 같다면 서로 간의 인증이 완료된다.
  • 대칭키 방식

    • 비대칭키 방식을 통해 서로 인증이 완료된(서로가 안전한 상대라는 걸 확인한) 후 정보를 주고 받을 때 사용되는 방식이다. 사용자와 서버는 하나의 대칭키를 만들어서 서로 공유한다.(서로 인증이 되었기 때문에 키 페어를 둘 필요가 없다.)
    • 예시) 사용자가 대칭키를 생성하여 그 키를 통해 어떤 정보(값)을 서버에게 전달한다. 서버도 이 대칭키를 사용하여 그 정보(값)을 얻어낸다. 이렇게 정보를 서로 교환하고 나면 대칭키는 폐기된다. (접속 혹은 정보 교환 때마다 새로운 대칭키를 생성하여 사용한다.)

📝 요약 및 하루 간단 회고

오늘은 드디어 우분투 리눅스를 설치한 VM에 ssh로 접근하여 직접 git, node, npm 등의 패키지를 설치해서 개발환경을 구성했다. 또, root권한을 내 개인 계정에도 허락함으로써 접근권한을 얻었다. 사실 앞의 내용들은 구글링하면서 어떻게 어떻게 해결했는데, 제일 성취감 있던 건 로컬에서 원격으로 VM에 접속하고 그 로컬 터미널에서 바로 자바스크립트 작업을 한 것이었다. 이게 왜 기분이 좋냐면, 다른 에디터나 IDE 없이 터미널에서만 (물론 엄밀히는 터미널에서 사용하는 nano 에디터(?)를 사용했지만) 코드를 작성한 게 너무 재미있었다. 메모장도 없었을 시기의 개발자들이 이런 기분이었을까? 분명 CLI로만 작업하는 게 불편한데, 재미있다.ㅋㅋㅋ 그리고 더 웃긴건 이렇게 작업하다가 다시 로컬 IDE를 보면 얼마나 감사한지... 특히나 eslint, prettier 정말 최고다ㅋㅋㅋㅋㅋ

undefined

Copyright 2023. all rights reserved by Jayden