Linux 서버에 대한 원격 로그인시 ~ / .profile 무시


32

~/.profilessh 또는 putty를 사용하여 원격 Linux 서버에 로그인 할 때 실행을 우회하거나 방지하는 방법이 있습니까?


왜 이렇게 하시겠습니까? 왜 파일의 값을 편집하지 않습니까? (귀하의 프로필입니다.)
Telemachus

7
누군가의 .profile 파일을 망쳐하고 :) 시스템에 직접 액세스 할 수없는 경우에 예를 들어 유용합니다
monkey_p

사용자들은 정확하게 상황을 나는 monkey_p에서 자신을 발견
앤드류 햄튼에게

답변:


30

bash의 경우 :

$ ssh hostname "bash --noprofile"

6
-t옵션 도 필요 하다고 생각합니다.
grawity

2
ssh -t 호스트 이름 "bash --noprofile". -t가 없으면 "standard in a tty"라는 오류가 발생합니다.
nitins 2016 년

14

모든 로그인 스크립트 --noprofile를 비활성화 하려는 경우 플래그를 사용 /etc/profile하여 ~/.profile, 등 --norc을 비활성화하고 다음 ~/.bashrc과 같이 비활성화 할 수 있습니다 .

$ ssh 127.0.0.1 "bash --noprofile --norc"

사용 가능한 경우 다른 쉘을 시작할 수도 있습니다. 나는 엉망으로 만든 후에 이것을 사용해야했다 chsh.

$ ssh 127.0.0.1 sh

이것은 아마도 빈 쉘 (프롬프트 없음)로 떨어질 것이므로 ls작동하는지 확인하십시오.


4

대상 머신이 bash 쉘에있는 경우 :

user@host:/$ ssh hostname "bash --noprofile"

또는 사용하려는 다른 프로필이있는 경우

user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"

1

또한 잘못된 로그인 파일을 삭제하려면 WinSCP와 같은 FTP 프로그램을 사용해보십시오. 이것은 그것을 버릴 것이지만 최소한 기본 쉘에 로그인 할 수 있어야합니다


아니면 그냥 이름을 바꿉니다.
jezmck

1

다른 사람들이 언급했듯이 연결을 시작할 때 플래그로 를 실행 --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:)는 비슷하게 수정하지 않으면 계속 처리됩니다.

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