기본 콘텐츠로 건너뛰기

추천 가젯

OpenSSL 명령어로 비대칭 암호화하기 (공개키로 암호화하고 비밀키로 복호화하기)

비대칭 암호화 암호화 키와 복호화 키가 서로 다른 비대칭 암호의 특징을 이용하여 공개키로 암호화하고 비밀키로 복호화할 수 있다. 우선 이전에 생성한 private.pem 과 public.pem 이 필요하다. 비밀키는 계속 가지고 있고, 통신을 하고자 하는 사람에게 공개키를 전달한다. 그 다음 공개키를 가진 사람이 공개키로 암호화하고, 암호화한 결과를 전달한다. 이 과정은 도청되어도 비밀키를 알아낼 수 없기에 원문을 도청자가 알아낼 수 없다. 원문 준비하기 원본은 다음과 같이 준비한다. 주로 대칭 암호화를 사용할 키를 전달할 때 공개키 암호를 보조하여 사용하므로, 여기서는 키파일을 생성하겠다. echo -n "key=" > key.txt openssl rand -hex 32 >> key.txt echo -n "iv=" >> key.txt openssl rand -hex 16 >> key.txt 그러면 key와 iv가 포함된 파일이 완성된다. 이 파일을 안전하게 전달하기 위해 암호화한다. 공개키로 암호화하기 openssl pkeyutl -encrypt -pubin -inkey [public.pem] -in [key.txt] -out encrypted.bin openssl pkeyutl : openssl에서 제공하는 low-level 공개키/개인키 연산 유틸리티인 pkeyutl 을 이용한다. -encyprt : 암호화를 한다. -pubin : 입력받을 키의 종류를 공개키로 지정한다. -inkey [입력키] : 입력받을 키를 지정한다. 암호화를 할 때는 공개키를 지정한다. 필자는 'public.pem'으로 지정하였다. -in [입력파일] : 입력파일을 지정한다. 암호화를 할 때는 원문을 지정한다. 필자는 위에서 생성한 'key.txt'로 지정하였다. -out [출력파일] : 출력파일을 지정한다. 출력된 결과는 암호문이므로 저장될 이름을 지정한다. 필자는 'e...

Git과 CLI (1)

Git과 CLI

Git은 원래 리눅스 운영체제를 만든 '리누스 토발즈'가 리눅스의 소스 관리를 위해 만들었다.

처음에는 CLI(Command Line Interface)환경만 지원하였으나, GitHub와 함께 git이 유명해지면서 사용자가 늘어났다. 많은 사용자가 CLI 환경에서 Git을 사용하는 것을 어려워하였기에 GUI(Graphic User Interface) 환경에서 사용 가능한 프로그램이 등장했다.(IDE 내장 혹은 SourceTree 등)

그러나 GUI 프로그램은 CLI 기능 중 자주 쓰는 기능만 모아서 만들었기 때문에 Git의 모든 기능과 옵션을 100% 사용할 수 없다. 몇 가지 고급 기능은 CLI에서만 동작하는 것이다.

특히 서버에 SSH 등으로 접속하여 사용하는 경우 GUI를 사용하는 것 자체가 불가능하기에, CLI 환경에서 Git을 사용할 수 있어야 한다.

먼저 git을 설치하여야 한다. Windows 환경에서는  git-scm 홈페이지에 접속하여 설치하고, MacOS나 리눅스 배포판에서는 다음 명령어 중 적절한 명령어를 이용하여 설치한다.

brew install git
sudo apt-get install git

옵션 설정하기

Git을 사용하기 위해 git config 명령을 사용해서 Git 옵션 설정을 해야 한다. --global 옵션을 사용하여 전역 설정을, --local 설정을 사용하여 지역 옵션을, --system 옵션을 사용하여 시스템 옵션을 확인하고 수정하고 삭제할 수 있다.

git config --global <옵션명> #지정한 전역 옵션의 내용을 확인함
git config --global <옵션명> <값> #지정한 전역 옵션의 값을 새로 설정함
git config --global --unset <옵션명>  #지정한 전역 옵션의 값을 삭제함

git config --local <옵션명> #지정한 로컬 옵션의 내용을 확인함

git config --system <옵션명> #지정한 시스템 옵션의 내용을 확인함

"git config" 명령으로는 옵션을 보거나 값을 변경하거나 할 수 있다.

옵션의 종류는 다음과 같다.

  • 시스템 환경 옵션(--system): PC 전체의 사용자를 위한 옵션

  • 전역 옵션(--global): 현재 사용자를 위한 옵션

  • 지역 옵션(--local): 현재 Git 저장소에서만 유효한 옵션

공용 PC처럼 여러 사용자가 사용하거나 하는 경우 등 지역 옵션과 전역 옵션을 적절히 사용한다.

필수 설정

옵션 값을 이용하여 여러 가지 설정을 변경할 수 있지만 가장 필수적으로 해야 할 것은 사용자 이름, 이메일이다. 이 두 정보가 필요한 이유는 누가 어떤 작업을 했는지 알기 위함이다.

user.nameuser.email을 설정한다.

$ git config --global user.name "Hong gil dong"
$ git config --global user.email "gildong@example.com"

GitHub에 로그인 하기

터미널에서 git 명령어를 이용하여 원격저장소를 이용하기 위해서는 GitHub에 로그인을 해야 한다.

Git을 로컬 저장소에서만 이용한다면 로그인을 할 필요가 없지만, 원격 저장소에 올려 다른 사용자와 공유하거나 백업하기 위해서는 반드시 필요하다.

로그인 하는 방법은 세 가지가 있다.

  • ID/PW로 로그인하는 방법(폐지됨)

  • PAT로 로그인하는 방법

  • gh(github-cli)로 로그인하는 방법

여기에서는 gh로 로그인 하는 방법에 대해서 소개한다.

  • Windows에 gh 설치하기

    • cmd 또는 Powershell에 아래 명령어를 입력한다.

      • winget install --id GitHub.cli

  • Mac에 gh 설치하기

    • Terminal에서 다음 명령어를 입력한다

      • brew install gh

  • Linux에 gh 설치하기

    • Terminal에서 다음 명령어를 입력한다

      • sudo apt install gh

설치가 완료되었다면 터미널에 아래 명령어를 입력한다.

gh auth login

그러면 어떤 계정에 로그인 할 것인지, 어떤 프로토콜을 사용할 것인지, 인증 수단을 어떻게 하는 지 물을 것이다. 아래와 같이 화살표로 이동 후 엔터를 누른 후, Y를 입력하고 엔터를 누른다.

? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? (Y/n) Y

그러면 아래와 같이 로그인 하라는 말이 나온다. 우리는 아직 PAT 토큰을 발급받지 않았으니 우선 웹브라우저에서 로그인한다.

? How would you like to authenticate GitHub CLI?  [Use arrows to move, type to filter]
> Login with a web browser
  Paste an authentication token

그러면 "First copy your one-time code"라는 내용이 나온다. 8자리 코드를 복사한 후 엔터 키를 눌러 웹브라우저를 연다.

웹 브라우저가 열렸다면 깃허브 계정으로 로그인하고, 8자리 one-time code를 요구하면 붙여넣는다.

지시에 따라 Authorize 버튼을 누르면 CLI로 GitHub에 로그인 완료!

Git 사용하기

다음으로 hello-git-cli 레포지토리를 생성하기 앞서 디렉토리를 만든다.

mkdir hello-git-cli
cd hello-git-cli
pwd

정상적으로 hello-git-cli 폴더로 이동하였다면, git status 명령어를 이용하여 저장소의 상태를 확인한다. 당연히 아직 git 저장소를 만들지 않았으므로 에러가 발생한다.

git status
fatal: Not a git repository (or any of the parent directories): .git

만약 에러 없이 정상 동작하는 경우 새로 만든 폴더가 git 프로젝트의 하위 폴더라는 뜻이다. 예를 들어 Documents(내 문서) 폴더가 이미 Git 저장소로 지정된 경우일 때가 있다. 이런 경우 혹시라도 실수로 git push 명령어를 사용한다면 GitHub에 내 문서 전체가 공개될 수 있다. 진정한 오픈소스 그래서 실수로라도 Git 저장소를 생성한 경우 .git 폴더(숨김처리됨)를 삭제하여 저장소를 제거하는 것이다.


이제 방금 만든 hello-git-cli폴더를 저장소로 만들기 위해서 다음과 같은 명령어를 사용한다.

yegang@yegangs:~/hello-git-cli$ git init
Initialized empty Git repository in /volume1/homes/yegang/hello-git-cli/.git/
yegang@yegangs:~/hello-git-cli$ ls -a
.  ..  .git
yegang@yegangs:~/hello-git-cli$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
yegang@yegangs:~/hello-git-cli$

git init 명령은 현재 폴더에 Git 저장소를 생성한다. 명령의 결과는 '빈 깃 저장소를 초기화하였다'는 내용이다. 그리고 ls -a 명령어로 현재 디렉토리를 조회해 보면 .git 폴더가 생긴 걸 알 수 있다. 이 폴더가 Git 로컬 저장소이다.

댓글

가장 많이 본 글