SSH 세션에 대한 쉘 지정

SSH 세션에 대한 쉘 지정

SSH를 통해 사용자로 원격 서버에 로그인하고 있습니다 www-data. www-data서버의 사용자는 기본 셸을 다음으로 설정 /bin/sh하고 로그인할 때 대시를 셸로 사용합니다. 그런 다음 들어가서 쉘을 bash얻을 수 있습니다.bash

SSH를 통해 로그인할 때 Bash에 직접 로그인하고 싶습니다. 하지만 서버의 기본 셸을 변경하고 싶지 않습니다. 내 변경 사항이 SSH 세션에만 영향을 주기를 원합니다.

command="/bin/bash"에 공개 키를 넣으려고 했지만 .ssh/authorized_keys또 다른 부작용이 있었습니다. 로그인할 때 bash가 기본 셸로 작동했지만 scp작동이 멈췄습니다. 더 이상 remore 서버와 scp 파일을 전송할 수 없습니다.

bash다른 애플리케이션을 중단하지 않고 SSH 세션의 기본 셸을 설정하는 방법은 무엇입니까 ?

답변1

제가 사용하고 있던 시스템에서도 비슷한 문제가 있었습니다(기본 쉘은 이었고 원했지만 bash작동 하지 않았습니다).ksh93chsh

귀하의 경우에 대한 나의 해결책은 Dash가 시작 시 읽는 exec필수 쉘을 Dash에서 가져오는 것입니다. Bash는 or를 찾을 수 없는 한 ~/.profile건드리지 않습니다 (순서는 Bash 매뉴얼을 참조하세요).~/.profile~/.bash_profile~/.bash_login

# in ~/.profile:
if [ "$SHELL" != "/usr/bin/bash" -a -n "$SSH_TTY" -a -x /usr/bin/bash ]; then
    export SHELL="/usr/bin/bash"
    exec $SHELL -l
fi

SSH는 SSH_TTY대화형 SSH 세션에서 설정되므로 Bash를 사용할 수 있는지 확인하고 실행하기 전에 설정되어 있는지(비어 있지 않은 문자열) 확인합니다. 다른 응용 프로그램에서 볼 수 없도록 설정하고 내보내고 SHELLBash가 둘 다 부족하여 무한 루프에 갇히는 것을 방지하고 ~/.bash_profile다시 실행 ~/.bash_login하려고 합니다 ~/.profile.

관련 정보