Jeg logger på en ekstern server via ssh som bruger www-data
. Bruger www-data
på serveren har sin standard shell sat til /bin/sh
, og når jeg logger ind, får jeg dash som min shell. Jeg kan derefter skrive bash
og få bash
shell.
Jeg vil gerne logge ind på bash direkte, når Jeg kommer ind. Men jeg vil ikke ændre standardskallen på serveren. Jeg vil kun have, at min ændring påvirker ssh-sessionen.
Jeg har forsøgt at sætte command="/bin/bash"
foran min offentlige nøgle i .ssh/authorized_keys
, men dette har en anden bivirkning: mens bash fungerer som standard shell, når du logger ind, scp
stoppede med at arbejde. Jeg kan ikke længere scp filer til eller fra remore-serveren.
Hvordan kan jeg indstille bash
som standard shell til ssh-session uden at bryde andre applikationer?
Kommentarer
syntaks.
ssh
kommandolinjen, skal det ikke have nogen indvirkning på scp
. Svar
Jeg har et lignende problem på et system Jeg bruger (standard shell er bash
, jeg vil have ksh93
, og chsh
gør ikke “t arbejde).
Min løsning, tilpasset din situation, er at exec
den ønskede skal fra ~/.profile
Dash læser ved opstart. Bash rører ikke ~/.profile
, medmindre det ikke finder ~/.bash_profile
eller ~/.bash_login
den rækkefølge, se Bash manualen.
# 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 sætter SSH_TTY
i interaktive SSH-sessioner, så vi ” kontrollerer igen for at se, om det er sat (ikke-tom streng), før du sørger for, at Bash er tilgængelig og udfører det. Jeg indstiller og eksporterer SHELL
hvis ethvert andet program ser på det, og for at undgå at Bash løber ind i en uendelig løkke på grund af manglende begge ~/.bash_profile
og ~/.bash_login
og forsøger således at udføre ~/.profile
igen.
Kommentarer
- tak. Med en vigtig ændring fungerer din foreslåede tilgang. Udførelse af
$SHELL -l
forårsagede en gaffelbombe. Tilsyneladendebash -l
læser også.profile
. Når-l
udelades, fungerer alt som forventet. - Sandsynligvis fordi du mangler begge dele
~/.bash_profile
og~/.bash_login
? - Se min redigering af mit svar, hvilket gør
if
udsagn mislykkes, hvis vi ' allerede kører Bash. (ikke sikker på, at dette virkelig kræves, da det i stedet skal samle de andre init-filer).
ssh [email protected] /bin/bash
fungerede ' ikke?