angiv shell til ssh-session

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

  • ssh [email protected] /bin/bash fungerede ' ikke?
  • @DopeGhoti: Jeg ' m også nysgerrig efter det, men jeg formoder, at det ' vil have det samme problem som med hans

syntaks.

  • Jeg tvivler på det, da jeg angiver det på 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. Tilsyneladende bash -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).

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *