리눅스 SSH 명령어 사용법: CentOS 7 원격 접속하는 방법

안녕하세요! 리눅스 서버를 관리하거나 사용하다 보면 다른 서버에 원격으로 접속해야 하는 경우가 많습니다. 이때 가장 기본적이고 안전하게 사용되는 것이 바로 SSH(Secure Shell) 프로토콜과 관련 명령어입니다.

이 글에서는 CentOS 7 환경을 기준으로, 리눅스 터미널에서 다른 리눅스 서버로 SSH를 사용하여 원격 접속하는 방법에 대해 알아보겠습니다.

1. SSH란 무엇인가?

SSH는 Secure Shell의 약자로, 네트워크를 통해 다른 컴퓨터에 안전하게 로그인하고 명령을 실행할 수 있도록 설계된 네트워크 프로토콜입니다.

  • 보안: 기존의 Telnet, rlogin, rsh 등 보안에 취약했던 프로토콜들을 대체하기 위해 개발되었습니다. 통신 내용이 암호화되므로 중간에서 데이터를 가로채더라도 내용을 알기 어렵습니다.
  • 기능: 원격 터미널 접속, 파일 전송(SCP, SFTP), 포트 포워딩 등 다양한 기능을 제공합니다.
  • 기본 포트: 일반적으로 TCP 22번 포트를 사용합니다. (보안상의 이유로 변경하여 사용하는 경우도 많습니다.)
  • 구성 요소: 원격 접속 요청을 보내는 SSH 클라이언트(명령어: ssh)와 접속 요청을 받아 처리하는 SSH 서버(데몬: sshd)로 구성됩니다.

2. SSH 서버 설치 및 활성화 (CentOS 7 기준)

원격 접속을 받기 위해서는 대상 서버에 SSH 서버(OpenSSH) 패키지가 설치되고 실행 중이어야 합니다.

  • 설치 확인:

    rpm -qa | grep openssh-server
    

    명령어를 실행했을 때 openssh-server 관련 패키지가 보이면 이미 설치된 것입니다.

  • 설치 (설치되어 있지 않다면):

    sudo yum install openssh-server -y
    

    yum 패키지 관리자를 사용하여 openssh-server를 설치합니다. sudo는 관리자 권한으로 실행하기 위함이며, -y 옵션은 설치 중 묻는 질문에 자동으로 'yes'로 답합니다.

  • 서비스 활성화 및 시작:

    # 부팅 시 자동으로 SSH 서버가 시작되도록 설정
    sudo systemctl enable sshd
    
    # 지금 바로 SSH 서버 시작
    sudo systemctl start sshd
    
  • 서비스 상태 확인:

    sudo systemctl status sshd
    # 또는
    ps aux | grep sshd
    

    active (running) 상태가 보이면 정상적으로 실행 중인 것입니다. ps 명령어를 통해서도 sshd 프로세스가 떠 있는지 확인할 수 있습니다.

3. SSH 서버 설정 (/etc/ssh/sshd_config)

SSH 서버의 세부 동작은 /etc/ssh/sshd_config 파일을 수정하여 제어할 수 있습니다. 보안 강화나 특정 정책 적용을 위해 설정을 변경하는 경우가 있습니다. (수정 후에는 반드시 SSH 서비스를 재시작해야 합니다.)

  • 설정 파일 열기:

    sudo vi /etc/ssh/sshd_config
    

    (선호하는 편집기 사용)

  • 주요 설정 항목:

    • Port 22: SSH 접속 포트를 지정합니다. 기본값은 22번이지만, 보안을 위해 다른 포트 번호로 변경하고 주석(#)을 제거할 수 있습니다.
    • PermitRootLogin yes: root 계정의 원격 SSH 접속 허용 여부를 설정합니다. 보안상 no로 설정하고 일반 계정으로 접속 후 susudo를 사용하는 것을 강력히 권장합니다. (기본값은 배포판마다 다를 수 있습니다.)
    • PasswordAuthentication yes: 비밀번호 기반 인증 허용 여부입니다. 보안 강화를 위해 no로 설정하고 SSH 키 기반 인증만 사용하기도 합니다.
  • 설정 변경 후 서비스 재시작:

    sudo systemctl restart sshd
    

    설정 파일을 변경했다면 반드시 서비스를 재시작하여 변경 사항을 적용해야 합니다.

4. 방화벽 설정 (Firewalld)

CentOS 7의 기본 방화벽인 firewalld가 실행 중이라면, SSH 접속을 허용하도록 규칙을 추가해야 합니다.

  • SSH 서비스 또는 포트 허용:

    • 기본 22번 포트를 사용한다면:
      sudo firewall-cmd --permanent --add-service=ssh
      
    • 다른 포트(예: 2222)를 사용한다면:
      sudo firewall-cmd --permanent --add-port=2222/tcp
      
  • 방화벽 설정 적용:

    sudo firewall-cmd --reload
    

    --permanent 옵션으로 추가한 규칙은 --reload를 통해 적용해야 영구적으로 반영됩니다.

5. SSH 클라이언트로 원격 서버 접속하기

이제 로컬 리눅스 터미널에서 원격 리눅스 서버로 접속해 보겠습니다.

  • 기본 접속 명령어:

    ssh [원격 서버 사용자 계정]@[원격 서버 IP 주소 또는 호스트 이름]
    
  • 예시: 192.168.0.100 서버의 user1 계정으로 접속

    ssh user1@192.168.0.100
    
  • 최초 접속 시: 처음 접속하는 서버라면 다음과 유사한 메시지가 나타납니다.

    The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no)?
    

    이는 접속하려는 서버의 고유한 암호화 키(호스트 키)를 로컬 PC에 등록할 것인지 묻는 과정입니다. 서버가 확실하다면 yes를 입력합니다. 그러면 해당 서버 정보가 로컬 PC의 ~/.ssh/known_hosts 파일에 저장되고 다음 접속부터는 묻지 않습니다.

  • 인증: yes 입력 후에는 해당 원격 서버 계정의 비밀번호를 입력하라는 메시지가 나옵니다. 정확히 입력하면 원격 서버의 셸 프롬프트가 나타납니다. (SSH 키 기반 인증을 설정했다면 비밀번호 대신 키 암호를 묻거나 바로 접속될 수 있습니다.)

  • 접속 종료: 원격 서버에서의 작업을 마치고 원래 로컬 터미널로 돌아오려면 exit 명령어를 입력합니다.

6. 유용한 SSH 접속 옵션

ssh 명령어는 다양한 옵션을 제공하여 접속 방식을 세밀하게 제어할 수 있습니다.

  • -p [포트 번호]: 기본 22번이 아닌 다른 포트를 사용하는 SSH 서버에 접속할 때 사용합니다.
    ssh user1@192.168.0.100 -p 2222
    
  • -i [개인 키 파일 경로]: 비밀번호 인증 대신 SSH 키 기반 인증을 사용할 때 특정 개인 키 파일을 지정합니다.
    ssh -i ~/.ssh/my_private_key user1@192.168.0.100
    
  • -v: 접속 과정을 자세히 보고 싶을 때 사용합니다(Verbose mode). 연결 문제 해결에 유용합니다.
    ssh -v user1@192.168.0.100
    
  • 원격 명령 바로 실행: 접속 후 특정 명령만 실행하고 바로 종료할 수도 있습니다.
    ssh user1@192.168.0.100 'ls -al /home/user1'
    

마무리

지금까지 리눅스 환경에서 SSH를 사용하여 원격 서버에 접속하는 기본적인 방법을 알아보았습니다. SSH는 단순 원격 접속뿐만 아니라 파일 전송, 터널링 등 강력하고 다양한 기능을 제공하는 필수적인 도구입니다. 특히 보안이 중요시되는 환경에서는 비밀번호 인증보다는 SSH 키 기반 인증을 사용하는 것이 더욱 안전합니다.