SSH : Secure Shell Protocol의 약자로 네트워크 프로토콜(22) 중 하나이다. 클라이언트와 서버가 인터넷과 같은 네트워크를 통해 통신할 때, 보안을 위해서 사용하는 프로토콜이다. 보통 password 인증과 RSA 공개키 암호화 방식으로 연결한다.
접속을 위한 조건
AWS EC2 기준
다운 받은 RSA 키를 현재 경로로 이동한다.
mv ~/Downloads/test-EC2-key.pem .
키를 지정하여 접속 명령어를 친다.
ssh -i test-EC2-key.pem ec2-user@13.250.109.223 -p22
만약 경고창에서 unprotected라는 게 나온다면 pem 키를 chmod 600으로 변경해주면 된다.
새로운 ssh key를 만들고 싶을 때
ssh-keygen
를 통해 public key와 private key를 받는다.
public key는 .ssh 디렉토리에 있는 authorized_keys에 있는 파일에 새로운 행에 붙여넣기를 하고 private key 경로에 똑같이 사용자명@ip주소를 입력하면 접속이 가능하게 된다.
현재 세션에 키를 붙어있게 만들기 위한 명령어
ssh-add test-EC2-key.pem
이후에
ssh ec2-user@13.250.109.223 -p22
해도 접속이 가능해진다.
curl ifconfig.co
curl ifconfig.me
간단하게 http 테스트가 가능한 curl
curl google.com과 curl https://google.com의 결과값은 다르다.
curl -v https://google.com
v옵션을 쓰게 되면 certificate에 대한 start date와 expire date, CNAME 등 자세한 정보를 알 수 있다.
도메인 질의 프로세스
nslookup google.com
telnet과 ping의 차이를 명확하게 알아야 한다.
ping의 경우, 서버가 살아있는지 단순 체크이며 웹서버가 살아있는지 판단하는 것은 아니다.
즉, telnet과 ping이 체크하는 프로토콜이 무엇인지를 알아야 한다.
ping은 osi 3계층안에서 동작한다.
telnet, ping

특정 포트가 잘 떠있는지에 대한 명령어
tcp udp 리스닝하는게 무엇인지 확인
netstat -lntpu
어떤 포트가 커넥션이 얼만큼 established(연결) 되는지 아니면 TIME_WAT 상태인건지 조회
ex) DB 커넥션 확인
netstat -an | grep "port"
java process id, option 등을 확인하고 싶을 때
ps -ef | grep ""
ps aux | grep ""
ps -ef와 ps aux는 둘 다 현재 실행 중인 프로세스를 표시하는 명령어입니다. 하지만 이 둘은 옵션의 형식과 출력 형식에서 차이가 있습니다.
| 항목 | ps -ef | ps aux |
|---|---|---|
| 옵션 형식 | UNIX 표준 옵션 (- 사용). | BSD 표준 옵션 (- 없이 사용). |
| 출력 필드 | 프로세스 ID, PPID, UID, CMD 등 기본 필드. | 메모리 및 CPU 사용률, TTY 등 추가 정보 포함. |
| 사용자 필터링 | 모든 프로세스(시스템 프로세스 포함). | 사용자가 실행한 프로세스 중심으로 출력. |
| 호환성 | UNIX 시스템에서 더 일반적. | BSD 계열 시스템에서 더 일반적. |
ps -efUNIX 스타일 옵션:
-e: 모든 프로세스를 출력.-f: "Full-format"으로 자세한 정보를 출력.출력 형식:
예시 출력:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mar15 ? 00:00:06 /sbin/init
user 1500 1 0 10:00 ? 00:00:01 /usr/bin/python script.py
ps auxBSD 스타일 옵션:
a: 터미널에 연결된 모든 사용자 프로세스를 출력.u: 프로세스를 실행한 사용자와 CPU/메모리 사용률 정보를 표시.x: 터미널과 연결되지 않은 프로세스도 포함.출력 형식:
예시 출력:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 16380 1300 ? Ss Mar15 0:06 /sbin/init
user 1500 1.2 2.3 80000 30000 ? Sl 10:00 0:01 /usr/bin/python script.py
ps -ef: UNIX 스타일로, 옵션 앞에 -를 붙입니다.ps aux: BSD 스타일로, 옵션 앞에 -를 붙이지 않습니다.ps -ef:ps aux:ps -ef: 기본적으로 모든 프로세스 출력(시스템 프로세스 포함).ps aux: 터미널과 관계없는 백그라운드 프로세스도 포함하여, 사용자와 관련된 작업 중심으로 출력.| 목적 | 추천 명령어 |
|---|---|
| 시스템 프로세스 상태 확인 | ps -ef |
| CPU/메모리 사용률 확인 | ps aux |
| 프로세스 간 관계(PPID) 분석 | ps -ef |
| 사용자별 자원 사용량 확인 | ps aux |
ps -ef와 ps aux는 서로 다른 표준에 기반한 명령어이며, 사용자는 상황에 따라 적합한 명령어를 선택할 수 있습니다.ps aux가 더 적합하고, 프로세스 관계를 파악해야 하는 경우 ps -ef를 사용하는 것이 더 유용합니다.시스템정보(systeminfo)를 확인
cat /proc/meminfo
/proc/meminfo는 메모리 사용 상태를 키-값 쌍으로 나열하며, 주요 항목은 다음과 같습니다.기본 메모리 정보
사용 가능한 메모리
기타 항목
cat /proc/meminfo | grep Mem
| 기능 | iostat | /proc/meminfo |
|---|---|---|
| 목적 | CPU 및 디스크 I/O 성능 분석. | 시스템 메모리 상태 확인. |
| 주요 대상 | CPU 사용률, 디스크 입출력 부하. | 물리적 메모리(RAM) 및 스왑(Swap) 사용량. |
| 데이터 범위 | 디스크 및 CPU 작업에 집중. | 메모리와 관련된 세부 정보 제공. |
| 포맷 | CLI 명령어를 통해 가공된 출력 제공. | 텍스트 기반의 키-값 쌍 형태로 제공. |
| 사용 사례 | 입출력 병목 문제, CPU 부하 분석. | 메모리 부족, 캐시 및 버퍼 확인. |
iostat:/proc/meminfo:이 두 도구를 함께 활용하면 시스템 자원의 전반적인 상태를 보다 명확히 이해할 수 있습니다.
systemd는 리눅스 시스템 및 서비스 관리자로 시스템 부팅 및 관리 작업을 효율적으로 처리하기 위해 설계된 도구이다. 기존의 sysVinit 및 upstart 시스템을 대체하며, 병렬화와 모듈성을 중심으로 설계되었다.
| 기능 | SysVinit | Upstart | Systemd |
|---|---|---|---|
| 병렬 실행 | 불가능 | 부분 가능 | 완전 가능 |
| 의존성 관리 | 제한적 | 제한적 | 세부적 의존성 관리 가능 |
| 로깅 통합 | 없음 | 없음 | journald 제공 |
| 타이머 지원 | 없음 | 없음 | 지원 |
| 복잡도 | 낮음 | 중간 | 높음 |