Published on

linux timeout in locking authority file 원인과 해결

Authors
  • avatar
    Name
    Indo Yoon
    Twitter

SSH로 서버에 접속할 때 timeout in locking authority file 메시지가 보인다면, 대부분 X11 포워딩에 쓰이는 xauth가 홈 디렉터리의 권한 파일 잠금을 얻지 못한 상황입니다. 셸 로그인 자체는 이미 끝난 뒤에 출력되는 경우가 많아서 서버 운영에는 당장 지장이 없지만, 원인을 남겨두면 같은 계정에서 계속 반복됩니다. 이 글은 메시지가 만들어지는 구조를 먼저 설명하고, 홈 디렉터리 여유 공간과 권한, 잠금 파일, NFS 환경 순서로 점검하는 방법을 정리합니다.

한눈에 보기

이 메시지는 인증 실패가 아니라 파일 잠금 대기 시간 초과입니다. 접속한 계정의 홈 디렉터리에 xauth가 쿠키를 기록하지 못하거나, 다른 프로세스가 잠금을 오래 잡고 있을 때 발생합니다.

  • 의미: xauth가 ~/.Xauthority를 갱신하려다 잠금을 얻지 못하고 기다리다가 포기한 상태입니다.
  • 영향 범위: SSH 셸 세션은 대개 정상이고, X11 애플리케이션 실행만 실패합니다.
  • 대표 원인: 홈 디렉터리 여유 공간 부족, 쿼터 초과, 소유자나 권한 불일치, 남아 있는 잠금 파일, NFS 홈의 지연, 동시 세션 다수입니다.
  • 첫 조치: 메시지에 찍힌 파일 경로를 확인하고, 그 경로가 쓰기 가능한지 확인합니다.
  • 예방: X11 포워딩이 필요 없는 서버라면 접속 옵션과 서버 설정에서 아예 끄는 편이 안전합니다.

xauth와 권한 파일 잠금의 구조

X11 포워딩을 사용하는 SSH 세션에서는 서버 쪽 sshd가 세션마다 인증 쿠키를 만들고, xauth를 통해 사용자 홈의 권한 파일에 그 쿠키를 등록합니다. 문제는 여러 세션이 같은 권한 파일을 동시에 건드릴 수 있다는 점입니다. 그래서 xauth는 파일을 갱신하기 전에 잠금을 잡고, 갱신이 끝나면 풀어놓는 방식으로 동작합니다.

잠금은 권한 파일과 같은 위치에 보조 파일을 만들어 관리합니다. 이미 잠금이 걸려 있으면 xauth는 잠시 기다렸다가 다시 시도하고, 정해진 대기 범위를 넘기면 timeout in locking authority file 메시지를 남깁니다. 즉 이 메시지는 두 가지 중 하나를 뜻합니다. 다른 프로세스가 잠금을 놓지 않고 있거나, 잠금 파일 자체를 만들 수 없을 만큼 홈 디렉터리가 막혀 있다는 뜻입니다.

xauth 매뉴얼에는 잠금을 강제로 해제하는 옵션도 안내되어 있습니다. 잠금이 남아 있다고 판단되면 해당 옵션을 사용할 수 있지만, 다른 세션이 실제로 사용 중인 경우에는 데이터가 어긋날 수 있으므로 먼저 사용 주체를 확인해야 합니다.

원인별 비교 표

증상흔한 원인확인 방법대응
로그인할 때마다 메시지가 보임홈 여유 공간 부족, 쿼터 초과df -h, quota -s오래된 로그와 임시 파일 정리
특정 계정에서만 발생홈 디렉터리 소유자나 권한 불일치ls -ld ~, ls -l ~/.Xauthority소유자와 권한 복구
잠금 파일이 계속 남음이전 세션 비정상 종료ls -la ~/.Xauthority*잠금 파일 정리 후 재접속
NFS 홈에서 간헐적으로 발생원격 파일 시스템 지연과 잠금 처리mount, findmnt홈 로컬화 또는 X11 포워딩 축소
세션을 여러 개 열면 발생같은 권한 파일 동시 갱신현재 세션 수 확인세션별 권한 파일 분리
읽기 전용 환경에서 발생마운트 옵션, 불변 속성mount, lsattr쓰기 가능한 경로로 지정

단계별 점검과 해결

메시지에 찍힌 경로 확인

가장 먼저 확인할 것은 메시지 뒤에 붙은 파일 경로입니다. 경로가 예상과 다른 홈 디렉터리를 가리킨다면 계정 정보나 마운트 상태가 바뀌었을 수 있습니다. echo $HOME과 getent passwd <계정명>으로 실제 홈 경로를 대조해 보면 좋습니다.

홈 디렉터리 여유 공간과 쿼터 확인

홈이 가득 찼거나 쿼터를 넘겼다면 잠금 파일을 만들 수 없어 같은 메시지가 반복됩니다. df -h로 마운트별 여유 공간을 보고, 쿼터를 쓰는 환경이라면 quota -s로 사용량을 확인합니다. 배포 서버라면 애플리케이션 로그와 임시 업로드 파일이 홈을 채우는 경우가 흔하므로 로그 로테이션 설정도 함께 봅니다.

소유자와 권한 확인

권한 파일과 홈 디렉터리의 소유자가 계정과 어긋나면 xauth가 갱신에 실패합니다. ls -ld ~와 ls -l ~/.Xauthority로 소유자와 권한을 확인하고, 필요하면 chown과 chmod로 정리합니다. 권한 파일은 본인만 읽고 쓸 수 있는 좁은 권한이 적절합니다. root로 로그인해 홈 전체 권한을 한꺼번에 바꾸는 방식은 다른 설정까지 깨뜨릴 수 있어 피합니다.

남아 있는 잠금 파일 정리

이전 세션이 비정상 종료되면 잠금 파일이 그대로 남을 수 있습니다. ls -la ~/.Xauthority*로 보조 파일이 있는지 확인하고, 사용 중인 프로세스가 없다는 것을 확인한 뒤 정리합니다. lsof나 fuser로 해당 파일을 잡고 있는 프로세스가 있는지 먼저 보는 것이 안전합니다. 정리 후 새 세션으로 접속해 메시지가 사라지는지 확인합니다.

NFS 홈 디렉터리 점검

홈 디렉터리를 NFS로 마운트한 환경에서는 잠금 처리 자체가 원격으로 이루어져 지연이 생기기 쉽습니다. findmnt로 홈이 어떤 파일 시스템인지 확인하고, 원격이라면 잠금 파일 정리가 다른 호스트의 세션과 충돌하지 않는지 살펴야 합니다. 운영 정책상 가능하다면 배포 계정의 홈을 로컬로 두는 편이 이런 문제를 줄입니다.

X11 포워딩 필요 여부 재검토

서버 운영과 배포만 하는 계정이라면 X11 포워딩은 대부분 필요하지 않습니다. 클라이언트에서 -X 없이 접속하거나 -o ForwardX11=no를 지정하면 xauth 자체가 관여하지 않습니다. 서버 쪽에서도 sshd 설정의 X11 포워딩 항목을 정리하면 계정별로 반복되는 메시지를 근본적으로 줄일 수 있습니다.

상황별 선택

  • GUI 도구가 꼭 필요한 경우: xauth 패키지가 설치되어 있는지 확인하고, 홈이 쓰기 가능한지 먼저 점검합니다. 접속 옵션은 신뢰 범위가 넓은 방식보다 기본 포워딩을 사용합니다.
  • GUI가 필요 없는 운영 서버: 클라이언트 설정과 서버 설정 모두에서 X11 포워딩을 끄는 것이 가장 단순한 해결입니다.
  • 컨테이너나 읽기 전용 홈: XAUTHORITY 환경 변수로 세션 전용 경로를 지정합니다. 공용 경로를 쓰면 다른 사용자와 섞일 수 있으므로 세션마다 새로 만드는 편이 안전합니다.
  • 세션을 여러 개 여는 작업: 세션마다 권한 파일 경로를 다르게 두면 잠금 경합을 피할 수 있습니다.
  • 배포 자동화와 원격 스크립트: 비대화형 실행에서는 포워딩을 요청하지 않도록 접속 옵션을 고정합니다.

주의할 점

  • 권한 파일을 지우면 현재 세션의 X 인증이 끊길 수 있으므로, 삭제 전에 백업해 두는 편이 좋습니다.
  • 잠금 파일을 지우기 전에 다른 프로세스가 사용 중인지 반드시 확인합니다. 확인 없이 지우면 동시 세션에서 인증 정보가 어긋날 수 있습니다.
  • NFS 홈에서는 한 호스트에서 지운 잠금 파일이 다른 호스트 세션에 영향을 줄 수 있습니다. 정리 전에 접속 호스트를 확인합니다.
  • 홈이 가득 찬 것이 원인이라면 xauth만 손보지 말고 로그와 임시 파일 정리, 로그 로테이션까지 함께 처리합니다. 같은 원인으로 배포나 다른 서비스가 멈출 수 있습니다.
  • 권한이 갑자기 바뀐 경우에는 단순 설정 실수인지, 다른 작업이 홈을 건드렸는지 이력을 확인합니다.

자주 묻는 질문

메시지가 보여도 SSH 로그인은 성공한 건가요?

대부분은 그렇습니다. 셸 세션은 정상적으로 열리고 X11 포워딩만 실패한 상태라서, 명령 실행과 배포 작업은 그대로 진행됩니다. 다만 홈 여유 공간 부족처럼 다른 문제가 함께 있는 경우가 있으므로 원인은 확인해 두는 편이 좋습니다.

권한 파일을 지워도 되나요?

지울 수는 있지만 먼저 백업하는 것이 안전합니다. 현재 접속 중인 세션이 그 파일을 참조하고 있으면 X 애플리케이션이 끊길 수 있고, 다음 접속에서 새로 만들어지면서 이전 쿠키는 사라집니다. 잠금 파일만 정리해도 해결되는 경우가 많으므로 순서를 나눠서 시도합니다.

서버에서 X11 포워딩을 아예 끄려면 어떻게 하나요?

클라이언트에서는 접속 옵션으로 포워딩을 요청하지 않도록 지정하고, 서버에서는 sshd 설정의 X11 포워딩 항목을 정리한 뒤 데몬 설정을 다시 읽게 합니다. 설정을 바꾸면 기존 세션에는 바로 적용되지 않으므로 새 접속으로 확인해야 합니다.

NFS 홈 디렉터리에서 자주 발생하는 이유는 무엇인가요?

잠금 파일을 원격 파일 시스템에 만들어야 해서 로컬보다 지연이 크고, 여러 호스트가 같은 홈을 공유하면 잠금 경합도 늘어납니다. 그래서 같은 계정이라도 접속 호스트에 따라 메시지가 나타났다 사라지기도 합니다.

xauth를 찾을 수 없다는 메시지가 함께 보이면 어떻게 해야 하나요?

X11 포워딩을 요청했는데 서버에 xauth가 설치되어 있지 않은 경우입니다. 포워딩이 필요 없다면 접속 옵션에서 요청을 빼는 것으로 충분하고, 필요하다면 서버에 해당 패키지를 설치한 뒤 다시 확인합니다.

출처

SSH 접속 과정에서 마주치는 다른 메시지들과 디스크 점검 절차도 함께 정리해 두면 운영 중 원인 파악이 빨라집니다. 관련 글로 SSH 접속 오류와 타임아웃 점검 정리와 리눅스 디스크 사용량과 아이노드 점검을 함께 참고하세요.