0. 소프트웨어 관리
SSH (Secure SHell)
- 22번 포트 사용
- 네트워크를 이용하여 원격으로 접속하는 서비스
=> Linux 사용시 일반적으로 SSH Client를 이용한 접속이 일반적
- 공개키 암호 방식으로 암호화된 데이터 송수신
- 원격 접속 대상(서버) Linux host에 SSH Daemon process (sshd, 부르는 용어 -> server program, daemon, service)가 동작중이어야 한다 -> client/server 구조
- 원격 접속 client는 SSH client 프로그램을 통해 접속
- Windows : putty, xshell 등
- Linux/MacOS : ssh 명령
- 별도의 공개키를 생성하여 client에 제공하고 접속하는 방식으로 사용가능
- public cloud에서 제공하는 가상 컴퓨팅 서비스
- IaC를 이용한 infrastructure 관리시에도 많이 사용
- ssh-keygen 명령 사용
- 가상 PC 환경에서의 SSH 접속환경 구축방법
- NAT 환경에 포트 포워딩 기능 사용
- Virtualbox -> Linux image -> 네트워크 -> 고급 -> 포트포워딩 설정
- ssh client 사용시 : host ip 127.0.0.1 (loopback) / host port : 22
- NAT 네트워크 구성 : 별도 네트워크 구성시 유리 (가상 PC 네트워크 구성)
- 호스트 어댑터 이용 -> SSH server ip로 접속
스냅 패키지 관리
스냅 개념
Ubuntu에 새로 도입한 패키지 형식의 샌드박스 형태 패키지 (완전히 격리된 형태)
패키지를 만들 때 프로그램이 사용하는 모든 라이브러리를 패키지 안에 포함
장점
- 개발자가 다른 패키지나 라이브러리 의존성을 고려하지 않고 개발
- 기존 시스템과 격리되어 실행하는 샌드박스 형식으로 보안 강화
단점
snap 명령
- snap이 별도로 설치되지 않은 경우 설치 후 사용 -> sudo apt-get install snap
- snap [옵션] 명령
- install 스냅명 : 지정한 스냅 설치, 관리자 권한
- list : 설치한 스냅 목록 출력
- remove 스냅명 : 지정한 스냅 삭제, 관리자 권한
- info 스냅명 : 지정한 스냅 상세 정보 출력
- find 스냅명 : 지정한 스냅 검색
이 실습에서 예시로 든 hello-world 스냅은 말그대로 Hello, World!를 출력하는 간단한 테스트 용도
파일 아카이브 및 압축
파일 아카이브
파일들을 하나로 묶는 동작
- tar 명령
아카이브 파일 확장자 -> .tar
tar 기능 [옵션] <아카이브 파일> <아카이브 대상 파일 or 디렉토리>
기능
- c : 새로운 tar 파일 생성
- t : tar 파일 내용 출력
- x : tar 파일을 원본 형태로 추출
- r : 새로운 파일 추가
- u : 수정된 파일 업데이트
옵션
- f : 아카이브 파일 지정
- v : 처리 과정 출력
- j : bz2 형식으로 압축/해제
- z : gz 형식으로 압축/해제
- tar cvf <.tar> <아카이브 대상> : 아카이브 파일 생성
- tar tvf <.tar> <아카이브 대상> : 아카이브 파일 내용 확인
- tar xvf <.tar> <아카이브 대상> : 아카이브 파일 내용 추출
ex) tar xvfz ~/Downloads/putty-0.77.tar.gz
- tar cvfz <.tar.gz> <아카이브 대상> : 아카이브 파일 생성 및 gzip 압축
- tar cvfj <.tar.bz2> <아카이브 대상> : 아카이브 파일 생성 및 bzip2 압축
내용을 확인하고 싶으면 file 명령어 활용하기
압축
파일 크기를 줄이는 동작
이미 압축한 파일을 또 압축한다고 크기가 더 줄거나 하지는 X
여담) POSIX (파직스) : UNIX 표준 규약
1. 네트워크 명령
네트워크 명령
Debian 계열 및 Redhat 계열 공통 명령과 같은 기능을 하지만 他 패키지를 통해 동작하는 명령 존재
(기능은 같은데 명령어가 다르다던지 등)
호스트 접속 확인 명령
ping [옵션] <호스트 IP 또는 domain>
- -c 횟수 : 횟수만큼 패킷 송수신
(Windows처럼 일반적으로 4번 고정 개념도 없이 별다른 설정을 안하면 끊임없음)
ex) ping -c 5 www.example.com
- ICMP 기반 명령; 해당 호스트가 보안 문제로 응답하지 않는 경우도 존재
원격 호스트에 대한 패킷 경로 표시 - routing 경로 확인
- Ubuntu : traceroute 명령 ; sudo apt install traceroute
- CentOS : tracepath 명령 ; sudo yum install iputils-tracepath
traceroute [옵션] <호스트>
- -n : 주소를 IP 주소로 표시
- -m maxttl : 패킷 최대 TTL 설정
ex) traceroute -m 10 www.example.com
호스트 IP 주소 / 도메인명 검색
- DNS (Domain Name Server)에 해당 host에 대한 IP 주소/도메인명 검색 요청 명령
- /etc/resolv.conf 파일에 검색 요청할 DNS 정보 기록
host [옵션] <domain / IP 주소>
DNS 정보 검색
dig [옵션] <쿼리 타입> <도메인>
- -x address : IP 주소가 address인 호스트 DNS 정보 출력
- any : 모든 정보
- ns : 지정 도메인 공인 네임 서버 (authority section)
- dig @공인네임서버 <도메인> : 네임 서버 지정
ex) dig @ns.icann.org www.example.com
도메인 정보 취득
Ubuntu에서 별도 설치 -> sudo apt install whois
whois [옵션] <호스트 (www. 제외한 도메인)>
- -h server : 검색에 사용할 서버 지정
SSH Client 명령
ssh [옵션] < [사용자명]@<호스트명> >
- -i <공개키 파일 경로 및 파일명> : 공개키 파일
ex) ssh -i ~/.ssh/id_rsa.pub worker@127.0.0.1
- -l user : 원격 호스트에 접속할 사용자명
- exit : ssh client 종료
- ssh <호스트 IP> : login시 ID와 PW 입력
- ssh <사용자명@ 호스트 IP> : PW 입력 -> 가장 일반적인 방식
ssh-keygen : 공개키/개인키 생성 명령

- 사용자 홈 디렉토리/.ssh에 공개키와 개인키 저장
개인키 : id_rsa , ssh server에 저장
공개키 : id_rsa.pub , ssh client 사용
- 공개키의 permission은 소유자만 읽기/쓰기 권한 부여
- chmod 600 id_rsa.pub
CLI 방식의 웹 브라우저
인터넷을 이용하여 특정 사이트로부터 데이터 download 동작 수행하는 웹 브라우저 기능 명령
wget [옵션] URL
- -b : 백그라운드로 download
- -r : 재귀적 download
- -c : 이어받기 download
curl [옵션] URL
- 별도 패키지 설치 필요 -> sudo snap install curl 또는 sudo apt install curl
- -O : download 결과를 URL에서 가져온 파일명으로 저장
- -o file : download 결과를 file로 저장
네트워크 인터페이스 확인 설정
ip [옵션] addr [내부명령]
- -s : 상세 정보
- -f family : 네트워크 주소 종류 family
- -r : 호스트명 표시
내부 명령
- show : device 주소 표시 (생략 가능)
- add addr : device 주소 추가
- del addr : device 주소 삭제
- flush dev : device 주소 일괄 삭제
ifconfig 명령
향후 삭제 예정 명령어
- ubuntu에서 사용을 원하면 패키지 설치 -> sudo apt install net-tools
인터넷 경로 (routing) 설정
ip route [내부 명령어]
route [옵션][내부 명령어]
네트워크 소켓 정보 및 접속 상황 표시
- ss [옵션]
- ip [옵션] link [내부 명령]
- netstat [옵션]
-i : 네트워크 인터페이스 접속상태 관련 정보
-r : 라우팅 테이블 표시
-s : 프로토콜 통계 정보
-l : 접속대기 중인 소켓만 표시
-t : TCP 소켓 정보 표시
-n :IP 주쇼 형식으로 출력
여담) MySQL이나 MariaDB는 3306 포트 주로 사용 -> 그 포트가 주로 항상 열려있다보니
네트워크 인터페이스 트래픽 데이터 표시 (wireshark와 유사 기능)
sudo tcpdump [옵션][조건]
- -c count : count 개수의 패킷 취득 후 종료
- -F file : 패킷 필터링 조건을 file에서 읽음
- -i if : 인터페이스 if 지정
조건
- host host명 : 특정 호스트
- port port번호 : 특정 포트번호
ex)
sudo tcpdump port http and host www.example.com
sudo tcpdump -c 20 port ssh
2. TIF
뭔가 또 정신없이 휘몰아친 것 같은 하루였다. 마치 지수 그래프를 보는 것마냥 갈수록 난이도가 급상승하는 느낌이다.
예전에 리눅스 기초 책으로 독학 실습할 적에는 ifconfig를 자주 썼었는데 실제로는 곧 삭제될 예정인 명령어라는게 많이 놀라웠다.
오늘 추가로 알아볼만한 것: