[이론] ssh, shell, kernel 얘들이 뭔데?

0
post-thumbnail

예전부터 궁금했었다

"ssh에 접속해서 ... ... "
"kernel 수준에 직접 접근하는... ... "
"shell으로 ... ... "

의문이 떠오른 김에 간단하게나마 바로 정리할 것임
지금 안 하면 분명 귀찮아서 안 하게 될 것임


🌟 SSH

secure shell
원격지의 컴퓨터를 안전하게 제어하기 위한 프로토콜
또는 보안 원격제어 과정 전체를 의미한다

Client는 원격제어를 시도하는 쪽이고
Server는 제어를 받을 쪽이다

원격제어는 SSH가 탄생하기 전에도 있었지만
평문으로 통신이 이뤄졌기에 정보가 세어나갔을 때 보안상 위험이 있었다
이를 해결하기 위해 구축된 것이 SSH이다

Mac 및 Linux에는 기본적으로 SSH Client 프로그램이 설치되어있다
window의 경우 Xshell 등의 프로그램을 따로 설치하여 사용한다

SSH Key에 관하여
Private Key, Public Key의 생성 및 보안 방식에 대해서는
필요할 때 다시 최신화된 정보를 검색하고 사용하는 것으로 한다


🌟 Shell & Kernel

SSH에서도 shell이라는 단어를 봤다
그럼 이게 대체 뭘까?

터미널이든 명령 프롬프트든 아무튼 뭔가
그런 친구들을 이야기 하는 것도 같고
그런데 정확히는 모르겠고

일단 소프트웨어 카테고리 전반을 보며 확인해본다

옳거니!
💡 요 놈은 사용자의 명령을 해석하여 컴퓨터한테 전달하는 놈이다

사용자가 마우를 클릭한다든지 키보드 자판을 누른다든지 이런 게 다 입력이다
쉘은 이 입력을 해석해서 컴퓨터에게
'야! 사용자가 ㅇㅇ 하라고 한다!'
이렇게 알려주는 친구다

🛑 통신분야 또는 통신 관련 작업에서는 SSH자체를 Shell이라고 간단하게 부르는 일도 있다고 한다
헷갈릴 일은 없겠지만 그럴 일이 있어도 헷갈리면 아니되겠다


대충 위와 같은 그림으로 정리해볼 수 있다
Mac에서는 zsh라고 뜨고
Ubuntu 환경에서는 bash라고 뜨고
근데 뭔가 차이는 없는 것 같은데 아무튼 다를 것 같고
그냥 그런가보다 하고 사용했었는데
종류가 다른 shell의 이름이었다

❗사용자와 kernel을 이어준다고 그림을 그려놨다

그러면 커널은 정확히 뭘까?
그림 옆에 써둔 대로다

  • 커널은 운영체제의 핵심기능부
  • 컴퓨터의 전반적인 자원을 관리

shell이 사용자로부터 받은 신호를 해석하고
그 신호를 자기네들끼리 아는 언어로 바꿔서 kernel에게 말해준다
kernel은 들은 내용을 하드웨어에 전달하고 하드웨어 사용을 조율한다

그렇다 굉장히 중요한 녀석이었다

📝 정리

  • 큰 차원에서 Shell과 Kernel이 운영체제(O.S)를 구성한다
  • Shell은 사용자의 명령을 해석하는 일을 한다
  • Kernel은 전달받은 명령을 통해 하드웨어 작업에 개입한다


0개의 댓글