~/.profile
ssh 또는 putty를 사용하여 원격 Linux 서버에 로그인 할 때 실행을 우회하거나 방지하는 방법이 있습니까?
답변
bash의 경우 :
$ ssh hostname "bash --noprofile"
답변
모든 로그인 스크립트 --noprofile
를 비활성화 하려는 경우 플래그를 사용 /etc/profile
하여 ~/.profile
, 등 --norc
을 비활성화하고 다음 ~/.bashrc
과 같이 비활성화 할 수 있습니다 .
$ ssh 127.0.0.1 "bash --noprofile --norc"
사용 가능한 경우 다른 쉘을 시작할 수도 있습니다. 나는 엉망으로 만든 후에 이것을 사용해야했다 chsh
.
$ ssh 127.0.0.1 sh
이것은 아마도 빈 쉘 (프롬프트 없음)로 떨어질 것이므로 ls
작동하는지 확인하십시오.
답변
대상 머신이 bash 쉘에있는 경우 :
user@host:/$ ssh hostname "bash --noprofile"
또는 사용하려는 다른 프로필이있는 경우
user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
답변
또한 잘못된 로그인 파일을 삭제하려면 WinSCP와 같은 FTP 프로그램을 사용해보십시오. 이것은 그것을 버릴 것이지만 최소한 기본 쉘에 로그인 할 수 있어야합니다
답변
다른 사람들이 언급했듯이 연결을 시작할 때 플래그로 bash 를 실행 --noprofile
하면 작동하지만 다른 쉘을 사용하는 경우 옵션 일 수도 있고 아닐 수도 있습니다.
한 가지 대안은 프로파일 스크립트가 SSH 연결 자체를 감지하고 그에 따라 동작하도록하는 것입니다. SSH 연결은 일반적으로 많은 환경 변수를 설정하므로 쉽게 확인할 수 있습니다. 프로필 시작 부분에 다음 줄을 추가하면 충분합니다.
if [ "$SSH_CONNECTION" != "" ]; then
echo Logging in with ssh
return
else
echo Logging in with something that is not ssh
fi
# rest of your profile goes here
는 return
경우 생성 스크립트의 나머지 건너 뜁니다 $SSH_CONNECTION
SSH 연결이 시작 될 때마다 일반적으로 생성 될 환경 변수가 설정됩니다. 그렇지 않으면 프로파일이 정상적으로 실행됩니다.
영향을받는 프로필 스크립트 만 건너 뜁니다. 다른 모든 프로파일 스크립트 (예 /etc/profile
:)는 비슷하게 수정하지 않으면 계속 처리됩니다.