[Linux] root 계정 SFTP 접속 오류 해결 가이드

2025. 5. 28. 00:39·깐돌의 클라우드 도구함
728x90

RHEL 8.4에서 root 계정 SFTP 접속 오류 해결 가이드 (feat. Neofetch)

클라우드 솔루션 구축 업무를 수행하면서, 대다수 솔루션 또는 오픈소스들이 RHEL 8 (CentOS 8)에서 동작하기 시작했습니다. 그래서 RHEL 8에 익숙해질 겸 TestBed를 RHEL 8.4로 설치했는데, root 계정에 대한 SSH는 접속이 되지만 SFTP는 접속이 안 되는 현상이 발생했습니다. 이 문제를 해결하는 데 꽤나 많은 시간을 보냈기에, 다른 엔지니어분들과 공유하고자 이 가이드를 작성합니다. (일반 사용자 계정은 SSH와 SFTP 모두 정상적으로 작동했습니다.)

1. SFTP 접속 에러 현상

macOS에서 SFTP 클라이언트를 통해 RHEL 8.4가 설치된 KVM 호스트에 root 계정으로 접속을 시도했을 때, 다음과 같은 오류 메시지가 발생하며 접속이 되지 않았습니다. FileZilla와 같은 GUI SFTP 클라이언트를 사용해도 동일한 현상이 나타났습니다.


hkjeon@MacBook-Pro ~ % sftp root@xx.xx.xx.4
Received message too long 458964786
Ensure the remote shell produces no output for non-interactive sessions.
hkjeon@MacBook-Pro ~ % sftp hk@xx.xx.xx.4
hk@xx.xx.xx.4's password:
Connected to xx.xx.xx.4.
sftp> exit

위 로그에서 확인할 수 있듯이, 일반 사용자 계정 (hk)으로는 SFTP 접속이 정상적으로 이루어졌지만, root 계정에서는 Received message too long 이라는 메시지와 함께 접속이 실패했습니다. 이는 SFTP 통신 과정에서 예상치 못한 데이터가 수신되었다는 것을 의미합니다.


2. 원인 분석

이 SFTP 접속 오류의 원인은 이전에 블로그에 정리했던 Neofetch 자동 실행 설정 때문이었습니다. ~/.bashrc 파일에 Neofetch 명령어를 추가하여 로그인 시 자동으로 실행되도록 설정했는데, 이 부분이 문제가 되었습니다.

SFTP와 같은 비대화형(non-interactive) 세션은 셸 환경 설정 파일 (예: .bashrc)에서 표준 출력(stdout)으로 어떤 메시지도 출력하지 않을 것을 기대합니다. 하지만 neofetch 명령어는 시스템 정보를 ASCII 아트와 함께 표준 출력으로 보여주기 때문에, SFTP 세션이 시작될 때 이 출력을 예상치 못한 데이터로 인식하여 오류를 발생시켰던 것입니다.

Red Hat 공식 문서에서도 .bashrc에 입력한 명령어가 표준 출력을 하는 경우, SFTP 로그인 세션에서 제대로 처리하지 못하고 Received message too long 메시지를 볼 수 있다고 명시하고 있습니다.

Red Hat Solution: SFTP "Received message too long" Error

3. 해결 방법

이 문제를 해결하는 가장 좋은 방법은 .bashrc에 적용했던 설정을 .bash_profile로 옮기는 것입니다. .bash_profile은 로그인 셸(login shell)이 시작될 때만 실행되고, SFTP와 같은 비대화형 세션에서는 실행되지 않기 때문입니다. 이렇게 하면 Neofetch는 SSH 로그인 시에만 실행되고, SFTP 접속에는 영향을 주지 않습니다.

다음은 ~/.bash_profile 파일의 내용입니다. alias vi='vim'과 neofetch 명령어를 .bash_profile에 추가했습니다.


[root@hk-tb ~]# cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi
# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

alias vi='vim'

neofetch
export PS1='[\u@\[\033[1;31m\]\h\[\033[0m\] \W]\$'

이렇게 설정 변경 후, sftp root@xx.xx.xx.4 명령어를 다시 실행해보니 SFTP 접속이 정상적으로 이루어졌습니다. 또한, SSH를 통해 접속했을 때도 Neofetch가 여전히 잘 실행되는 것을 확인할 수 있었습니다.

Bashrc 및 Bash_profile 이해하기

4. 참고 자료

.bashrc와 .bash_profile의 차이를 이해하는 것은 리눅스 셸 환경을 효과적으로 관리하는 데 중요합니다.

  • Login Shell: 사용자가 시스템에 로그인할 때 (예: SSH 접속, 터미널 에뮬레이터에서 로그인) 실행되는 셸입니다. .bash_profile 환경 설정 파일을 먼저 읽고 실행합니다.
  • Non-login Shell: 사용자가 로그인 없이 실행되는 셸입니다 (예: 이미 로그인된 터미널에서 새로운 셸을 시작하거나, 스크립트 실행, SFTP 세션). .bashrc 환경 설정 파일을 읽고 실행합니다.

리눅스에서 .bash_profile은 실행될 때 먼저 .bashrc를 실행하는 경우가 많습니다. RHEL 8의 기본 동작 또한 그렇습니다. 사용자 로그인 없이 실행하는 셸은 최소한의 실행 환경이 필요한 반면, 로그인 셸은 사용자의 필요에 따라 환경을 구성할 수 있도록 설계되어 있습니다. 이러한 차이점을 이해하고 적절한 설정 파일에 명령어를 배치하는 것이 중요합니다.

.bashrc vs .bash_profile (Linuxize)

마무리

이 가이드는 RHEL 8.4 환경에서 root 계정의 SFTP 접속 오류가 .bashrc 파일의 Neofetch 자동 실행 설정 때문에 발생했음을 밝히고, .bash_profile로 설정을 옮기는 해결 방법을 제시했습니다. 이 경험 공유가 비슷한 문제를 겪는 엔지니어분들께 도움이 되기를 바랍니다. 셸 환경 설정 파일의 정확한 이해는 안정적인 시스템 운영에 필수적입니다.

728x90
반응형

'깐돌의 클라우드 도구함' 카테고리의 다른 글

[Linux] PXE 서버 구축 및 자동 OS 설치 가이드  (0) 2025.05.29
[Linux] RHEL 웹 콘솔 (Cockpit) 설치 및 활용 가이드  (0) 2025.05.28
[Linux] 시스템 정보 확인하기 (neofetch)  (1) 2025.05.27
[Linux] 로그인 배너 설정 가이드  (0) 2025.05.27
[컨테이너] RHOCP4 클러스터에서 노드를 효과적으로 관리하는 방법  (0) 2025.05.26
'깐돌의 클라우드 도구함' 카테고리의 다른 글
  • [Linux] PXE 서버 구축 및 자동 OS 설치 가이드
  • [Linux] RHEL 웹 콘솔 (Cockpit) 설치 및 활용 가이드
  • [Linux] 시스템 정보 확인하기 (neofetch)
  • [Linux] 로그인 배너 설정 가이드
깐돌씨
깐돌씨
하루하루를 기록하는 공간. 일상에서 얻은 영감, 좋아하는 취미, 그리고 클라우드 업무 팁까지 함께 나눕니다.
  • 깐돌씨
    조용한 깐돌이네
    깐돌씨
  • 전체
    오늘
    어제
    • 분류 전체보기 (69) N
      • 깐돌일기 (2) N
      • 취미탐험대 (13) N
      • 깐돌의 클라우드 도구함 (54)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    서버 관리
    노원 자연휴양림
    리눅스
    수락산 자연휴양림 예약
    RHEL8
    Docker
    rhocp
    KVM
    컨테이너
    리눅스 가상화
    kickstart
    리눅스 서버
    오픈소스
    rhel
    private registry
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
깐돌씨
[Linux] root 계정 SFTP 접속 오류 해결 가이드
상단으로

티스토리툴바