".bashrc"에 "exit 0"이 추가되어 서버에 로그인할 수 없습니다.

".bashrc"에 "exit 0"이 추가되어 서버에 로그인할 수 없습니다.

저는 $HOME/.bashrc호스팅 서버 CentOS 7을 실험 중이었고 사용자 지정 사용자 설정 없이 어떻게 작동하는지 확인하기로 결정했습니다.

나는 exit 0그것을 전에 추가했다 source /etc/bashrc.

내 짧은 관찰에 따르면 힌트와 색상만 포함된 것 같습니다. 그러나 사용자 액세스 제어도 관리하는 것으로 보입니다.

이제 로그인하려고 하면 쫓겨납니다.

왜 이런 일이 발생합니까?

원격으로 수리가 가능한가요?

저는 주로 SSH를 사용하여 로그인합니다. 이 문제를 해결하기 위해 설정할 수 있는 속성이나 변수가 있습니까?

답변1

bash가 올바르게 작동한다면 .bashrc쉘이 대화형 쉘인 경우에만 호출해야 합니다. 따라서 다음이 작동해야 합니다.

ssh server rm .bashrc

또는

ssh server mv .bashrc .bashrc-off

이렇게 하면 서버에 비대화형 셸이 생성되므로 셸은 .bashrc 문제의 영향을 받지 않습니다.

불행하게도 많은 Linux 배포판은 .profile호출을 제공하는데 .bashrc, 이 경우 길을 잃습니다.

답변2

~/.bashrcBash는 대화식으로 실행 중인지 여부에 관계없이 sshd에 의해 실행되고 있다고 판단할 때마다 소스 코드를 직접 가져옵니다.(1).

bash가 이를 결정하는 방법은 다음과 같습니다.ㅏ)envvar는 SHLVL1보다 작고비)SSH_CLIENT또는 envvars가 SSH2_CLIENT설정되었거나 stdin이연결된 소켓.

예:

$ echo echo this sux > /tmp/.bashrc
$ HOME=/tmp bash -c true
$ HOME=/tmp SHLVL= SSH_CLIENT= bash -c true
this sux

ksh93에서 bash를 호출할 때 stdin은 유닉스 도메인 소켓 쌍을 사용하여 파이프를 구현하는 소켓이 될 수도 있습니다.

$ ksh93 -c ': | HOME=/tmp SHLVL= bash -c :'
this sux

도저히 방법이 생각나지 않네요우회로SSH를 통해 실행하는 경우 ~/.bashrc(사용자가 추가 환경 변수를 설정할 수 있는 등 SSH 구성 오류를 악용하는 것 외에도)

어쨌든, 내가 아는 한, 많은 시스템 관리자는 사용자가 이를 우회할 수 없다고 보장하거나 보장하지 않는 것 같습니다.

(1)이 행동은파일에 기록하다:

Bash는 원격 셸 데몬(일반적으로 rshd) 또는 보안 셸 데몬 sshd에 의해 실행되는 경우와 같이 네트워크 연결에 연결된 표준 입력을 사용하여 실행 중인지 확인하려고 시도합니다. bash가 이런 방식으로 실행 중이라고 판단하면 다음에서 명령을 읽고 실행합니다 ~/.bashrc(파일이 존재하고 읽을 수 있는 경우).

데비안에서는 /etc/bash.bashrc이전에도 획득 할 수 있습니다 ~/.bashrc(문서화되지 않음).

답변3

댓글을 요약합니다.

SSH가 종료되는 이유 는 무엇 exit입니까 ?.bashrc

Paul_Pedant의 댓글

귀하의 프로필은 로그인 셸에서 생성됩니다.수행되지 않음. 따라서 exit로그인 쉘 자체를 종료하십시오.

원격으로 수리가 가능한가요?

엠마 루오의 코멘트

sftp user@host호스트에서 구성된 방식(내부적으로 또는 명령을 통해)에 따라 를 통해 액세스할 수 있습니다 .

roaima 이와 같은 상황을 피하기 위한 최고의 조언

쉘이 루트로 로그인하도록 하십시오. 그런 다음 다른 세션을 사용하여 다시 로그인해 보십시오. 시스템 파일을 편집할 때 항상

...

질문을 마무리하기 위해 이 댓글을 게시합니다. @Paul_Pedant 또는 @roaima가 답변을 게시하면 수락하겠습니다.

답변4

나도 똑같은 일을했습니다. Zsh와 동등한 Bash인 exit 0서버의 끝에 추가 했습니다 . 당신처럼 나도 내 서버에 로그인할 수 없습니다..zshrc.bashrc

기존 명령을 덮어쓰지 않고 a 명령(안전 복사)을 사용하여 scp문제를 해결했습니다 . 예를 들면 다음과 같습니다..zshrcexit 0

scp ~/.zsh/.zshrc my-server/.zsh/

바라보다! 내 서버에 다시 로그인할 수 있습니다.

관련 정보