리눅스

Linux 원격 제어 및 기본 명령어(1)

palantirops 2026. 1. 6. 15:58

Linux 원격 제어 및 기본 명령어 완전 정복 

리눅스 원격 제어 방법

리눅스 시스템을 원격으로 관리하는 방법은 크게 세 가지로 나뉩니다. 각각의 특성과 용도를 이해하면 상황에 맞는 최적의 도구를 선택할 수 있습니다.

1. Telnet (텔넷)

  • 환경: CLI(Command Line Interface) 기반
  • 통신 방식: 평문(Plain Text) 통신
  • 포트: TCP 23번
  • 보안: 낮음 - 모든 데이터가 암호화되지 않아 보안에 취약
  • 사용 권장: 현재는 보안 문제로 거의 사용하지 않으며, 레거시 시스템이나 격리된 네트워크에서만 제한적으로 사용

2. SSH (Secure Shell)

  • 환경: CLI 기반
  • 통신 방식: 암호화 통신
  • 포트: TCP 22번
  • 보안: 높음 - 모든 통신 내용이 암호화되어 안전
  • 사용 권장: 리눅스 원격 관리의 표준이며, 가장 널리 사용되는 방법

3. VNC (Virtual Network Computing)

  • 환경: GUI(Graphical User Interface) 제공
  • 통신 방식: 평문 통신
  • 포트: TCP 5900번부터 시작 (5900, 5901, 5902...)
  • 특징: 그래픽 환경이 필요한 작업에 유용하지만, 보안을 위해서는 SSH 터널링과 함께 사용 권장

디렉토리 탐색 명령어

cd (Change Directory)

디렉토리 간 이동을 위한 가장 기본적인 명령어입니다.

cd              # 사용자의 홈 디렉토리로 이동 (cd ~와 동일)
cd /etc         # /etc 디렉토리로 이동 (절대경로)
cd ..           # 상위 디렉토리로 이동
cd ../bin       # 상위 디렉토리의 bin 폴더로 이동 (상대경로)
cd -            # 이전에 있던 디렉토리로 이동

참고: 점(.) 하나는 현재 디렉토리를, 점(..) 두 개는 상위 디렉토리를 의미합니다.


경로 표기법: 절대경로 vs 상대경로

절대경로 (Absolute Path)

루트 디렉토리(/)부터 시작하여 목적지까지의 전체 경로를 표시하는 방법입니다.

/etc/sysconfig/network-scripts/ifcfg-ens160
/var/www/html/index.html
/home/user/Documents/report.txt

장점: 현재 위치와 무관하게 항상 동일한 위치를 가리킴
단점: 경로가 길어질 수 있음

상대경로 (Relative Path)

현재 위치를 기준으로 목적지까지의 경로를 표시하는 방법입니다.

../sysconfig/network-scripts/ifcfg-ens160
network-scripts/ifcfg-ens160
./script.sh

특징: /로 시작하지 않음
장점: 짧고 간결하게 표현 가능
단점: 현재 위치에 따라 경로가 달라질 수 있음


파일 및 디렉토리 조회

ls (List)

디렉토리 내용을 확인하는 명령어입니다.

ls              # 현재 디렉토리의 파일 목록
ls -l           # 상세 정보와 함께 출력
ls -a           # 숨김 파일까지 모두 출력
ls -R .         # 현재 디렉토리와 하위 디렉토리의 모든 내용을 재귀적으로 출력
ls -lh          # 파일 크기를 사람이 읽기 쉬운 형식으로 출력

which

PATH 환경 변수에 등록된 디렉토리에서 실행 파일의 위치를 찾아주는 명령어입니다.

which python    # python 실행 파일의 위치 확인
which ls        # ls 명령어의 실제 위치 확인

중요 개념: 리눅스는 PATH 변수에 등록된 디렉토리에서만 실행 파일을 자동으로 찾습니다. PATH에 등록되지 않은 디렉토리의 실행 파일은 ./실행파일 형식으로 실행해야 합니다.

./myscript.sh   # 현재 디렉토리의 스크립트 실행

텍스트 파일 다루기

cat (Concatenate)

짧은 텍스트 문서를 확인하거나 생성할 때 사용하는 다목적 명령어입니다.

cat filename              # 파일 내용 출력
cat file1 file2          # 여러 파일을 연결하여 출력
cat > newfile            # 새 파일 생성 (Ctrl+D로 종료)
cat >> existingfile      # 기존 파일에 내용 추가

리다이렉션 연산자:

  • >: 덮어쓰기 (Replace) - 기존 내용이 삭제됨
  • >>: 추가하기 (Append) - 기존 내용 뒤에 추가됨

실습 예제:

cd /var/www/html
echo "<h1>Rocky1 Server</h1>" | sudo tee index.html
cat index.html
sudo setenforce 0

find: 강력한 파일 검색 도구

find 명령어는 파일이나 디렉토리를 찾고, 찾은 결과에 대해 추가 작업을 수행할 수 있는 매우 강력한 도구입니다.

기본 사용법

find /usr -type f -size +50M

주요 옵션

타입 지정:

  • -type f: 일반 파일만
  • -type d: 디렉토리만
  • -type l: 심볼릭 링크만

크기 조건:

  • -size +50M: 50MB보다 큰 파일
  • -size -10M: 10MB보다 작은 파일
  • -size 100k: 정확히 100KB인 파일

시간 조건:

  • -mtime -7: 최근 7일 이내 수정된 파일
  • -atime +30: 30일 이상 접근하지 않은 파일

찾은 파일에 대한 작업 수행

# 찾은 파일을 즉시 복사 (-exec)
find /usr -type f -size +50M -exec cp {} /home/admin/lab \;

# 찾은 파일을 확인 후 복사 (-ok)
find /usr -type f -size +50M -ok cp {} /home/admin/lab \;

# 찾은 파일 삭제
find /tmp -type f -mtime +30 -exec rm {} \;

# 찾은 파일의 권한 변경
find /var/www -type f -exec chmod 644 {} \;

{} 의미: 찾은 파일을 나타내는 플레이스홀더
; 의미: -exec 명령의 종료를 표시


명령어 연결 연산자

여러 명령어를 조합하여 더 효율적으로 작업할 수 있습니다.

&& (AND 연산자)

첫 번째 명령이 성공해야 두 번째 명령이 실행됩니다.

mkdir mydir && cd mydir
# mydir 생성에 성공하면 해당 디렉토리로 이동

make && make install
# 컴파일 성공 시에만 설치 진행

|| (OR 연산자)

첫 번째 명령이 실패해야 두 번째 명령이 실행됩니다.

ping -c 1 google.com || echo "네트워크 연결 실패"
# ping이 실패하면 에러 메시지 출력

cd /some/directory || mkdir -p /some/directory
# 디렉토리 이동 실패 시 디렉토리 생성

; (세미콜론)

명령어들을 순차적으로 실행하며, 이전 명령의 성공/실패 여부와 무관합니다.

cd /tmp ; ls ; pwd
# /tmp로 이동 → 목록 출력 → 현재 위치 출력

echo "작업 시작" ; ./script.sh ; echo "작업 완료"
# 메시지 출력 → 스크립트 실행 → 완료 메시지 출력

실전 활용 팁

명령어 조합 예제

# 로그 파일 찾아서 압축
find /var/log -name "*.log" -type f -mtime +7 -exec gzip {} \;

# 대용량 파일 찾아서 목록 작성
find / -type f -size +100M > large_files.txt

# 빈 디렉토리 찾아서 삭제 확인
find /tmp -type d -empty -ok rmdir {} \;

# 조건부 백업
tar -czf backup.tar.gz /important/data && echo "백업 성공" || echo "백업 실패"