본문 바로가기

C

[시스템프로그래밍] ssh, sftp, 커널과 셸

서버 접속하기

SSH란?

Secure Shell Protocol, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜

ssh s<ID>@machine IP -p <port number>

기존 원격 접속은 ‘텔넷(Telnet)’이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안상 취약하다는 단점이 있었다. 실제로 WireShark같은 패킷 분석 프로그램을 이용하면 누구나 쉽게 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용 등의 데이터를 탈취할 수 있다. 때문에 이를 암호화하는 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리잡고 있다.

출처: https://library.gabia.com/contents/infrahosting/9002/  

 

작동원리

SSH는 대칭키/비대칭키 암호 방식으로 작동

  • 보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공.
  • IP spoofing (IP스푸핑, 아이피 위/변조 기법중 하나)을 방지하기 위한 기능을 제공.
  • X11 패킷 포워딩 및 일반적인 TCP/IP 패킷 포워딩을 제공.

SFTP란?

원격 서버에서 파일을 가져오는 프로토콜

SSH 프로토콜을 기반으로 실행되며 SSH의 모든 보안 및 인증 기능을 지원.

sftp -P <your port> s<ID>@<machine IP> get <file name>

Kernel이란?

운영체제는 크게 커널과 로 나눌 수 있다.

커널(Kernel, 알맹이)은 운영체제의 핵심 기능인 하드웨어 관리를 실제로 수행하는 프로그램이다.

커널은 소프트웨어와 하드웨어 간의 커뮤니케이션을 관리하며, 시스템이 부팅될 때 메모리에 올라가서 꺼질 때까지 실행된다.

Shell이란?

셸(Shell, 껍질)은 사용자와 운영체제의 커널 사이에서 사용자가 운영체제에 명령을 내릴 수 있는 인터페이스 역할이다.

사용자가 셸에 명령을 입력하면, 셸이 명령어를 해석하여 커널에 요청한다.

커널은 명령을 수행하며 하드웨어를 조작하고, 수행 결과를 셸에 전송한다.

셸은 이 결과를 해석하여 사용자에게 출력한다.

즉, 셸은 명령어를 해석하는 역할을 하여 사용자와 운영체제가 소통할 수 있도록 한다. 셸을 획득하면 명령어를 통해 원하는 작업을 수행하고 시스템을 제어할 수 있게 됨. 따라서 일반적으로 셸을 획득하는 것이 시스템 해킹의 성공

가장 일반적으로 사용되는 셸 중 하나는 "Bash" (Bourne Again Shell)

Linux/Unix Shell Commands

man page

도움말 같은 느낌으로 명령어를 어떻게 사용하는지 알려주는 매뉴얼 페이지

https://ihp001.tistory.com/65

 

[Linux]리눅스 man 명령어 - man 페이지 사용법, 주요 옵션, 사용 예

man 로컬 시스템에서 여러 참고 문서들을 이용하여 특정 명령이나 자원들의 메뉴얼을 출력하는 영역으로 유닉스에서는 총 8개의 영역으로 되어 있으나 리눅스 커널 부분이 추가되어 총 9개의 영

ihp001.tistory.com

 

make and remove

mkdir, rmdir - 디렉토리 생성, 삭제

cp - 파일 복사

mv - 파일 이동

rm - 파일 삭제

 

displaying a file

cat - 파일 읽기, 결합, 생성

less - 파일 읽기, 스크롤, '/'로 string 검색

head, tail - 처음이나 끝 부분 (기본 10줄) 보고자할 때 사용

 

file permission

r - read only

w - write

x - execute

 

chmod - 권한 변경

 

input/output redirection

a | b     - a의 output이 b의 input

a > b    - a의 output을 b에 덮어쓰기

a >> b  - a의 output을 b에 추가하기

a < b    - b를 읽기 

 

grep - 특정한 문자열 찾기