상세 컨텐츠

본문 제목

25.2.27. 파일 편집기 && SSH

AWS CLOUD SCHOOL 9기

by AI Engineer crystal 2025. 2. 27. 17:18

본문

1. SSH 서비스 (Secure Shell)

  • SSH(Secure Shell)는 네트워크 상에서 다른 컴퓨터나 서버에 안전하게 원격 접속하기 위한 프로토콜입니다. SSH는 데이터를 암호화하여 전달하므로, 보안성이 높아 원격 관리 작업에 자주 사용됩니다.
  • 기능: SSH를 통해 원격 시스템에 접속하고 명령을 실행할 수 있습니다. SSH는 사용자의 인증을 위해 패스워드나 공개키 기반 인증 방식을 지원합니다.
  • 장점: 암호화된 통신 덕분에, 패킷 스니핑(해킹) 등의 보안 위험으로부터 데이터를 보호합니다.
  • 용도: 서버 관리, 시스템 설정, 파일 전송 등에 사용됩니다.

2. 원격접속 서비스

원격 접속 서비스는 물리적으로 떨어져 있는 시스템에 접속하여 작업을 수행할 수 있도록 도와주는 서비스입니다. SSH는 대표적인 원격 접속 서비스입니다. 원격 접속 서비스를 통해 관리자는 서버나 시스템을 직접 물리적으로 접근하지 않고도 유지보수, 설정 변경 등을 할 수 있습니다.

  • 기능: 원격으로 서버에 접속하여 파일 시스템을 수정하거나 프로그램을 실행하는 등의 작업을 할 수 있습니다.
  • 프로토콜: SSH 외에도 원격 데스크탑, VNC, Telnet 등 다양한 원격 접속 방법이 존재합니다.

3. Ansible

Ansible은 IT 자동화 도구로, 주로 서버 설정, 애플리케이션 배포, 보안 패치 적용 등을 자동화하는 데 사용(구성관리)됩니다. Ansible을 사용하면 반복적인 관리 작업을 스크립트로 자동화하여 효율적으로 시스템을 관리할 수 있습니다.

  • 기능: Ansible은 SSH를 사용하여 원격 서버에 접속하고, 명령어를 실행하거나 파일을 배포하는 등의 작업을 자동으로 처리할 수 있습니다.
  • 장점: 비대화형(서버에 직접 접속하지 않고 원격에서 작업) 방식으로, YAML로 작성된 간단한 플레이북(playbook)을 통해 여러 서버를 동시에 관리할 수 있습니다.
  • 사용 예: 서버의 SSH 서비스 설치 및 설정, 원격 서버의 패키지 설치 및 업데이트, 시스템 보안 설정 등의 작업을 Ansible로 자동화할 수 있습니다.
  • Ansible을 이용한 SSH 원격접속 자동화
    • Ansible에서 SSH 사용: Ansible은 기본적으로 SSH를 사용하여 원격 서버에 접속합니다. Ansible 플레이북에서 명시된 작업을 원격 서버에서 실행할 수 있습니다.
    • 서버 설정 자동화: 예를 들어, Ansible을 사용하여 여러 서버에서 SSH 서비스를 설정하거나, 보안 설정(예: SSH 키 인증 설정, 패스워드 인증 비활성화 등)을 자동으로 관리할 수 있습니다.
    • 대상 서버 관리: Ansible을 사용하면 다수의 서버에 대해 동일한 SSH 설정을 한 번에 적용할 수 있어 대규모 환경에서 효율적으로 관리가 가능합니다.

4. Terraform

Terraform은 인프라를 코드로 관리하는 오픈소스 도구로, 주로 클라우드 환경에서 서버, 네트워크, 데이터베이스와 같은 리소스를 정의하고 프로비저닝( IT 리소스를 준비하고 구성하는 과정 )하는 데 사용됩니다. Terraform을 사용하면 인프라 리소스를 코드로 관리하고 자동화할 수 있어 효율적인 인프라 관리가 가능합니다.

  • 기능: Terraform은 클라우드 제공업체의 API를 사용하여 리소스를 생성, 업데이트, 삭제할 수 있습니다. 주로 HCL(하시코프 구성 언어)을 사용하여 리소스를 정의하고, 이를 바탕으로 인프라를 자동화합니다. Terraform은 상태 파일을 관리하여 현재 리소스의 상태를 추적하고 변경 사항을 효율적으로 적용합니다.
  • 장점: 선언적 언어를 사용하여 원하는 인프라 상태를 정의하면, Terraform이 이를 최적화하여 실행합니다. 또한, 멀티 클라우드 환경을 지원하고, 리소스의 버전 관리가 가능하여 복잡한 인프라도 일관성 있게 관리할 수 있습니다.
  • 사용 예: AWS, Azure, Google Cloud와 같은 클라우드 환경에서 EC2 인스턴스, VPC, S3 버킷, 데이터베이스 등 다양한 리소스를 프로비저닝하거나 설정할 수 있습니다. 예를 들어, AWS에서 EC2 인스턴스를 자동으로 생성하고, 필요한 네트워크와 보안 그룹을 설정하는 작업을 Terraform으로 자동화할 수 있습니다.

배포판 리눅스

  • Debian → ubuntu (docker, kuberbetes)
  • RedHat → RHEL, Rocky (인프라 관리)

$PATH

환경변수로써 각 사용자가 로그인을 하면 사용자별로 지정된 변수에 값을 부여하여 사용할 수 있도록 제공된다. 이때 PATH 환경 변수는 해당 경로에 있는 실행파일들은 전체 경로를 다 쓰지 않고 명령어만 쓰더라도 실제 경로에 있는 실행파일이 동작하도록 제공된다.


파일 편집

편집기

정규식 사용 예시:

sed에서 정규식을 사용할 때는 -E (Extended regular expression) 옵션을 추가하는 것이 유용합니다. 기본적으로 sed는 **Basic Regular Expressions (BRE)**를 사용하지만, -E 옵션을 사용하면 **Extended Regular Expressions (ERE)**를 사용하여 더 강력한 정규식 기능을 활용할 수 있습니다.

예시 1: 특정 단어를 포함하는 패턴 찾기

예를 들어, test.txt 파일에서 linux 또는 Linux를 찾고 싶다면, 정규식을 사용하여 대소문자를 구분하지 않게 패턴을 작성할 수 있습니다.

sed -i -E 's/[Ll]inux/hello/g' test.txt

설명:

  • [Ll]inux: 대소문자를 구분하지 않고 linux 또는 Linux를 찾는 정규식입니다.
    • [Ll]는 L 또는 l이 올 수 있음을 의미합니다.
    • inux는 그대로 inux를 찾아냅니다.

예시 2: 숫자 대체

test.txt 파일에서 모든 숫자를 NUMBER로 변경하려면:

sed -i -E 's/[0-9]+/NUMBER/g' test.txt

설명:

  • [0-9]+: 하나 이상의 숫자 (0-9)를 찾는 정규식입니다.
    • +는 1번 이상 반복되는 숫자들을 매칭합니다.

예시 3: 특정 단어로 시작하는 라인 찾기

파일에서 **start**로 시작하는 라인들을 찾아 바꾸고 싶다면:

sed -i -E 's/^start/hello/g' test.txt

설명:

  • ^start: start로 시작하는 문자열을 찾는 정규식입니다.
    • ^는 라인의 시작을 나타냅니다.

예시 4: 특정 단어로 끝나는 라인 찾기

파일에서 end로 끝나는 라인들을 찾아 바꾸고 싶다면:

sed -i -E 's/end$/hello/g' test.txt

설명:

  • end$: end로 끝나는 문자열을 찾는 정규식입니다.
    • $는 라인의 을 나타냅니다.

예시 5: 숫자 뒤에 특정 문자가 있는 패턴 찾기

파일에서 숫자 뒤에 px가 오는 경우를 찾아 바꾸려면:

sed -i -E 's/[0-9]+px/NUMBERpx/g' test.txt

설명:

  • [0-9]+px: 하나 이상의 숫자 뒤에 px가 있는 패턴을 찾습니다.

3A(인증, 인가, 과금)

인가: username/keypair

  • user 가 만든 public key 는 서버의 .ssh/authorization_keys
    • 파일 없을 때, 직접 설정: ssh-keyscan 211.183.3.11 >> .ssh/known_hosts
    • The easiest way
    .ssh/config 
    
    Host # ← 접속하고 싶은 서버의 이름 
        Hostname   # ← 접속하고 싶은 서버의 IP
        User       # ← 원격지 서버에 접속하고자 할 때 어떠한 사용자로 로그인 할 것인가?
        IdentityFile   # ← 위에서 지정한 “User’ 로 로그인할 때 어떠한 개인키를 사용할 것인가?
        StrictHostKeyChecking    # ← 원격서버의 public 키가 없다고 하더라도 추가로 저장하지 않는다. 즉, 서버 인증 단계는 하지 않겠다!!!! 
    
    
  • ssh 접속시 keypair 인증에 실패할 경우 password 인증이 되지 않도록 하고 싶다면??
    • ssh 서버 설정에 대한 파일 내용을 수정해 주어야 한다.
      • vi /etc/ssh/sshd_config ⇒ PasswordAuthentication no
      • systemctl restart sshd

관련글 더보기