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
작동 하지 않았습니다).ksh93
chsh
귀하의 경우에 대한 나의 해결책은 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를 사용할 수 있는지 확인하고 실행하기 전에 설정되어 있는지(비어 있지 않은 문자열) 확인합니다. 다른 응용 프로그램에서 볼 수 없도록 설정하고 내보내고 SHELL
Bash가 둘 다 부족하여 무한 루프에 갇히는 것을 방지하고 ~/.bash_profile
다시 실행 ~/.bash_login
하려고 합니다 ~/.profile
.