
클라우드 공부를 처음 시작했을 때 저는 AWS 콘솔에서 인스턴스를 만들고 서비스를 선택하는 것이 핵심이라고 생각했습니다. 하지만 실제로 서버에 접속하려는 순간부터 리눅스 기본기가 없으면 아무것도 할 수 없다는 걸 느꼈습니다. SSH 키 권한 오류, 낯선 디렉터리 구조, 로그 확인, 포트 충돌, 방화벽 설정까지 클라우드 운영의 많은 부분은 리눅스 위에서 움직이고 있었습니다. 저는 그때 클라우드는 버튼을 누르는 기술이 아니라 서버를 이해하고 운영하는 기술이라는 생각을 하게 됐습니다. 이 글에서는 제 경험을 바탕으로 클라우드 입문자가 왜 리눅스를 먼저 봐야 하는지 정리해 보겠습니다.
리눅스 서버접속, 처음엔 왜 이렇게 막히나
SSH(Secure Shell)라는 단어부터 낯설었습니다. 쉽게 말해 SSH란 인터넷을 통해 원격 서버에 안전하게 접속해 명령어를 실행할 수 있게 해주는 연결 방식입니다. 윈도처럼 마우스로 클릭하는 방식이 아니라, 터미널 창에 명령어를 입력해 모든 걸 처리합니다. 제가 직접 해봤는데, 처음 SSH 접속에서 “Permission denied” 오류가 떴을 때 무슨 말인지 몰라 멍하니 화면만 봤습니다. 원인은 키 파일(pem 파일) 권한 설정이 너무 열려 있었기 때문이었습니다. 리눅스는 파일마다 소유자와 권한을 엄격하게 구분합니다. chmod 400 명령어로 키 파일 권한을 좁혀주자 바로 접속이 됐습니다. 리눅스 파일 구조도 윈도와 완전히 다릅니다. C드라이브, D드라이브 구분 없이 루트 디렉터리 /를 기준으로 모든 파일이 계층적으로 연결됩니다. 클라우드 서버에 처음 들어가면 자주 마주치는 경로는 이렇습니다.
- /etc : 서버 설정 파일이 모여 있는 위치
- /var/log : 애플리케이션과 시스템 로그가 저장되는 위치
- /home : 사용자별 작업 공간
- /opt : 추가 애플리케이션 설치 공간
이 구조를 모르면 설정 파일을 어디서 찾아야 하는지, 오류가 났을 때 로그를 어디서 봐야 하는지 알 수 없습니다. 솔직히 이건 예상 밖이었습니다. 서버 접속 자체가 이렇게 복잡할 줄 몰랐으니까요. 리눅스 파일 권한과 디렉터리 구조, 이 두 가지만 먼저 익혀도 클라우드 서버 접속에서 허비하는 시간이 크게 줄어듭니다.
클라우드 배포운영, 버튼 뒤에서 벌어지는 일들
배포(Deployment)란 내가 만든 애플리케이션을 사용자가 실제로 접속할 수 있는 서버 환경에 올리고 실행하는 전 과정을 말합니다. 클라우드 콘솔에서 인스턴스를 생성하는 건 배포의 시작일 뿐, 정작 중요한 작업은 전부 리눅스 터미널에서 이루어집니다. 제가 직접 백엔드 서버를 AWS EC2에 배포해 봤는데, 코드가 문제없이 돌아가던 로컬 환경과 달리 서버에서는 계속 실행이 실패했습니다. 로그를 확인해 보니 환경 변수가 빠져 있었고, 포트가 이미 사용 중이었습니다. tail -f 명령어로 실시간 로그를 보면서 원인을 추적할 수 있었습니다. tail -f란 파일의 마지막 줄부터 실시간으로 내용을 보여주는 명령어로, 서버 로그를 실시간으로 모니터링할 때 필수입니다. systemctl이라는 명령어도 이때 처음 제대로 이해했습니다. systemctl이란 리눅스에서 서비스를 시작, 중지, 재시작하고 부팅 시 자동 실행 여부를 설정하는 관리 도구입니다. 서버가 갑자기 꺼졌을 때 자동으로 재시작되도록 설정하려면 이 명령어를 반드시 알아야 합니다.
리눅스 서버 운영과 배포 실력에 대한 시장 수요는 꾸준합니다. Stack Overflow Developer Survey 2024에 따르면 전문 개발자의 약 62%가 Linux를 주요 운영 환경으로 사용하고 있습니다. 이 수치는 리눅스가 현업에서 얼마나 깊이 자리 잡고 있는지 보여줍니다. 배포와 운영 과정에서 리눅스를 모르면 오류의 원인조차 파악하기 어렵습니다.
리눅스 보안설정, 클라우드에서 절대 건너뛸 수 없는 이유
클라우드 서버는 인터넷에 직접 연결되어 있습니다. 서버를 만든 순간부터 외부 접근 시도가 시작된다고 봐야 합니다. 저는 처음 서버를 만들고 방치했다가 /var/log/auth.log를 확인해 보니 낯선 IP에서 SSH 접속 시도가 수백 건 쌓여 있었습니다. 솔직히 이건 예상 밖이었습니다. root 계정을 그대로 사용하는 것은 위험합니다. root란 리눅스에서 시스템 전체에 대한 모든 권한을 가진 최고 관리자 계정입니다. 이 계정이 노출되면 서버 전체가 위험해지기 때문에, 일반 사용자 계정을 따로 만들고 필요한 작업에만 sudo 권한을 부여하는 방식이 권장됩니다. 포트 관리도 핵심입니다. 웹 서비스는 80번(HTTP), 443번(HTTPS), SSH는 22번 포트를 기본으로 사용합니다. 불필요한 포트를 열어두면 공격자가 접근할 수 있는 경로가 늘어납니다. 리눅스의 방화벽 도구인 ufw(Uncomplicated Firewall)로 허용할 포트만 명시적으로 열어주는 것이 기본입니다. ufw란 리눅스에서 복잡한 방화벽 규칙을 간단한 명령어로 관리할 수 있게 해주는 도구입니다.
KISA 한국인터넷진흥원이 발표한 클라우드 보안 가이드에서도 불필요한 포트 차단, 최소 권한 원칙 적용, SSH 접속 키 기반 인증 사용을 기본 보안 수칙으로 명시하고 있습니다. 결국 클라우드 보안 설정의 핵심은 리눅스에서 익히는 사용자 권한, 포트, 방화벽 개념과 그대로 연결됩니다. 결국 리눅스는 클라우드 공부의 옵션이 아니라 필수 기초 체력입니다. AWS나 Azure 기능을 외우기 전에, 리눅스 서버 하나를 직접 다뤄보는 경험이 훨씬 큰 도움이 됩니다. 서버에 접속해 파일을 확인하고, 로그를 보며 오류를 잡아보는 것, 그게 클라우드 이해의 가장 현실적인 출발점입니다.