망 쳤어 .bashrc에서 종료


27

.bashrc 파일에 "exit"를 넣었습니다. 기계에 물리적으로 액세스 할 수 없으므로 ssh를 사용합니다. 나는 루트 권한이 없습니다. 서버에 연결할 때마다 연결이 자동으로 닫힙니다.

지금까지 시도했습니다.

  • scp 및 sftp로 .bashrc를 덮어 씁니다. 내가 무엇이든 할 수 있기 전에 연결이 닫힙니다.
  • 몇 가지 다른 GUI 프로그램을 사용하여 ssh에 액세스 (연결 종료)
  • ftp로 파일을 덮어 씁니다. (ftp를 사용할 수 없습니다)
  • 내 집 컴퓨터에서
    • $ ssh 호스트 "bash --noprofile --norc"(연결 종료)
    • $ ssh 호스트 "mv .bashrc bashrc_temp"(연결 종료)
    • $ ssh 호스트 "rm .bashrc"(같은 것)
    • $ ssh host -t (연결이 닫힙니다)

.bashrc를 비활성화하기 전에 .bashrc를 비활성화하거나 파일을 덮어 쓸 수있는 방법이 있습니까?

최신 정보

@ ring0

나는 당신의 제안을 시도했지만 운이 없습니다. bashrc 파일이 여전히 먼저 실행됩니다.

내가 시도한 또 다른 것은 다른 계정으로 로그인하여 .bashrc를 편집하는 sudo이지만이 계정에 대한 sudo 권한이 없습니다.

관리자에게 연락 할 것 같습니다.

편집하다

shell

나는 그것을 믿을 수 없지만이 접근법은 효과가있었습니다! "출구"처음 몇 줄 내에서 발생에도 불구하고 (몇 구성된 경우 블록 및 수출 의 .bashrc 파일에, 난 아직 스무 시도에서 성공적으로 인터럽트 Ctrl 키-C에 관리 문) (삼분 걸렸다). .bashrc에서 문제가되는 줄을 제거하고 모든 것이 다시 작동합니다.


2
darwinawards.com .bashrc 파일을 덮어 쓰거나 기본 쉘을 다른 것으로 변경할 수있는 사용자로서 (임시) 액세스 권한이 있어야합니다. MS가 말한대로 "시스템 관리자에게 문의하십시오".

2
man 8 sshd그것은 9. Runs user's shell or command.아홉 번째 단계로 말합니다 ... :-/

1
쉘이 여전히 열려 도착하고 .bashrc에 호출되는 때문에 SCP는 작동이 중지됩니다
알렉산드르 Levchuk을

참고로 이러한 제안 중 대부분이 작동하지 않는 이유는 ssh가 명령을 사용자의 쉘에 인수로 전달하여 명령을 실행하기 때문입니다. session.c에서 execve를 검색하십시오. 이 사용자 쉘 호출의 인수를 수정 / 추가 / 삭제할 방법이 없습니다.
마크 바그너

답변:


37

종료 부분 .bashrc이 실행 되기 전에 중단 (ctrl + C)을 시도 할 수 있습니다 .

테스트 사용자의 bashrc 상단에 다음을 추가하여 시도했지만 작동하지만 타이밍 문제 일뿐입니다. 내 경우에는 매우 쉽습니다.

sleep 3
echo "Too late... bye"
exit 0

8
시스템 관리자의 도움이 필요없는 유일한 솔루션 일 수 있으므로 +1입니다. 그러나 올바른 타이밍을 위해서는 많은 행운이 필요합니다 (ssh -v 호스트가 약간 도움이 될 수 있음).
JooMing

실제로 ctrl + C가 작동했습니다. 수면 없이도. 나는 bashrc에 "exit"를 배치하고 약 4 번의 시도 후에 빠른 ctrl + C로 복구 할 수 있었다. "-1"을 "+1"로 변경할 수 있도록 답을 수정하십시오.
Aleksandr Levchuk

@Aleksandr Levchuk 완료
shellholic

4
나는 여기서 엄청나게 낮은 기술과 잔인한 효과의 조합을 높이 평가합니다.
unixtippse

1
나는 미친 듯이 웃고있어 마침내 작동 할 때 서두르다. @JooMing에게 감사드립니다. 여기에서 serverfault.com/questions/94503 / ... Ctrl + C를 눌러도 모든 방법을 시도했지만 -v 옵션을 추가 한 후에 만 ​​작동했습니다!
mxmlnkn

12

시험판 액세스 권한이 부여 된 새 클러스터에서 .bashrc 파일도 엉망으로 만들었습니다. 멍청한 듯하고 싶지 않은, 내가하고 싶은 마지막 일은 관리자에게 도움을 요청하는 것이었고, 잘 작동하는 ^ + C를 얻지 못했습니다.
그러나 효과가 있었던 것은 'rm'명령을 ssh의 최종 인수로 보내는 것이 었습니다. 즉

ssh -tv user@host rm .bashrc

작동하기 위해 'mv'명령을 얻을 수 없었으므로 (-t없이 시도) -t 옵션이 수행해야한다고 생각하지만 원하는 경우 테스트 할 수 있습니다. 나는 이제 .bashrc ~ 파일 (vim 제작)에서 문제가되는 dodgy 줄을 제외한 모든 것을 복구했으며 세계에서 모든 것이 옳습니다! = D


2
ssh -tv user@home mv .bashrc .bashrc-old나를 위해 일했다
Code Commander

3

다른 사용자로 로그인 할 수 있으면 다음을 시도하십시오.

su user -s /bin/sh

물론 암호가 필요합니다.


1
당신이 다른, 쉬를 기반으로하지 쉘을 시도 할 수 있습니다 : kshcsh
휴 버트 Kario에게

3

내가 이와 같은 나쁜 경험을 회상하면 ssh, scp, sftp는 초기화 파일을 실행하는 것처럼 보입니다.

내 제안은 간단한 FTP를 사용하고 로그인 한 후 FTP 명령 줄에서 잘못된 파일을 삭제하거나 이름을 바꾸는 것입니다. 시스템에서 FTP 액세스를 허용한다고 가정합니다. 이 경우 수리가 완료되면 비밀번호를 (안전하게) 변경하십시오.


Filezilla는이를 위해 완벽하게 작동했습니다. "서버"메뉴를 드롭 다운하고 "숨겨진 파일 표시"설정을 선택하면됩니다.
Danny G

1

에서 man ssh(위해 OpenSSH_5.6p1적어도 확실하지가 추가 될 때),

~/.ssh/rc
        Commands in this file are executed by ssh when the user logs in, just
        before the user's shell (or command) is started.  See the sshd(8) manual
        page for more information.

.. ~/.ssh/rc다음을 포함하여 만들 수 있음을 의미합니다 .

mv ~/.bashrc ~/bak.bashrc

그런 다음 ssh로그인 쉘이 시작되기 전에 문제가있는 bashrc가 빠져 나옵니다. 그러면 분명히 수정하고 bak.bashrc다시 제자리로 옮길 수 있습니다


0

SCP 또는 SFTP를 통해 연결하고 .bashrc 파일을 그런 식으로 편집 / 이름 바꾸기 / 삭제하십시오. 편집-D' oh, 나는 당신이 그것을 시도했다고 말한 것을 본다. 오 잘


0

나는 같은 문제를 겪었고 어떻게 든 해결할 수있었습니다. ssh를 사용하여 시스템에 액세스하고 시스템에 로그인하자마자 Ctrl + c를 길게 누릅니다. 그런 다음 ~ / .bashrc를 읽지 못하여 수정할 수있었습니다.


1
가장 많이 답한 답변의 정확한 복제본
pauska

0

나는 이것이 효과가 있음을 발견했다.

e ...를 다시 눌러 grub 부트 로더를 인터럽트하십시오.

줄의 끝으로 가십시오.

줄 끝에 init = / bin / bash를 추가하십시오.

부팅하려면 b를 입력하고

bash 쉘을 열고 vim /root/.bashrc를 열고 그에 따라 편집하십시오. 나가면 이제 로그인 할 수 있습니다.


0

Homestead Vagrant를 사용하는 경우 ...

여기이 피클에서 빠져 나간 방법이 있습니다.

(Windows 10에서 Git Bash 사용)

cd ../Homestead/
mv ~/.ssh/known_hosts ~/.ssh/known_hosts_OLD
ssh vagrant@127.0.0.1 -p 2222 mv ./.bashrc ./.bashrc_OLD

참고 : 기본 비밀번호는 "vagrant"입니다.

이 기사가 도움이되었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.