Linux 서버에 대한 원격 로그인시 ~ / .profile 무시 로그인 할 때 실행을 우회하거나 방지하는 방법이

~/.profilessh 또는 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 프로그램을 사용해보십시오. 이것은 그것을 버릴 것이지만 최소한 기본 쉘에 로그인 할 수 있어야합니다


답변

다른 사람들이 언급했듯이 연결을 시작할 때 플래그로 를 실행 --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_CONNECTIONSSH 연결이 시작 될 때마다 일반적으로 생성 될 환경 변수가 설정됩니다. 그렇지 않으면 프로파일이 정상적으로 실행됩니다.

영향을받는 프로필 스크립트 만 건너 뜁니다. 다른 모든 프로파일 스크립트 (예 /etc/profile:)는 비슷하게 수정하지 않으면 계속 처리됩니다.