määritä kuori ssh-istunnolle

Kirjaudun etäpalvelimeen ssh: n kautta käyttäjänä www-data. Palvelimen käyttäjän www-data palvelimen oletuskuoreksi on asetettu /bin/sh, ja kun kirjaudun sisään, saan viivan komentotulkkini. Voin sitten kirjoittaa bash ja saada bash -kuoren.

Haluan kirjautua suoraan bashiin, kun Lähden sisään. Mutta en halua vaihtaa palvelimen oletuskuorta. Haluan, että muutokseni vaikuttaa vain ssh-istuntoon.

Olen yrittänyt laittaa command="/bin/bash" julkisen avaimen etupuoli .ssh/authorized_keys -palvelussa, mutta tällä on toinen sivuvaikutus: vaikka bash toimii oletuskuorena kirjautumisen yhteydessä, scp ei enää toimi. En voi enää scp-tiedostoja palautuspalvelimeen tai sieltä pois.

Kuinka voin asettaa bash oletuskuorena ssh-istunnolle rikkomatta muita sovelluksia?

Kommentit

  • ssh [email protected] /bin/bash ei toiminut ' ei toimi?
  • @DopeGhoti: I ' m myös utelias siitä, mutta epäilen, että ' ll on sama asia kuin hänen

syntakse.

  • Epäilen sitä, koska sen määrittämisellä komentorivillä ssh ei pitäisi olla vaikutusta scp.
  • vastaus

    Minulla on samanlainen ongelma yhdessä järjestelmässä Käytän (oletuskuori on bash, haluan ksh93 ja chsh ei ”t työ).

    Tilanteeseen mukautettu ratkaisuni on exec haluttu kuori kohdasta ~/.profile, joka Viiva lukee käynnistyksen yhteydessä. Bash ei ”kosketa ~/.profile, ellei se löydä ~/.bash_profile tai ~/.bash_login ( (katso Bash-käsikirja).

    # 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 asettaa SSH_TTY interaktiivisiin SSH-istuntoihin, joten me ” tarkista uudelleen, onko kyseinen joukko (ei-tyhjä merkkijono), ennen kuin varmista, että Bash on käytettävissä ja suorittaa se. Asetan ja viet SHELL, jos jokin muu sovellus katsoo sitä, ja välttääksesi Bashin törmäämän äärettömään silmukkaan, koska molemmat puuttuvat ~/.bash_profile ja ~/.bash_login ja yrittävät siten suorittaa ~/.profile uudelleen.

    Kommentit

    • kiitos. Ehdotettu lähestymistapa toimii yhdellä tärkeällä muokkauksella. $SHELL -l -suoritus aiheutti haarukkapommin. Ilmeisesti bash -l lukee myös .profile. Jos jätät -l pois, kaikki toimii odotetulla tavalla.
    • Luultavasti siksi, että molemmista puuttuu ~/.bash_profile ja ~/.bash_login?
    • Katso vastaukseni muokkaus, joka tekee if -lauseke epäonnistuu, jos ' on jo käynnissä Bash. (Et ole varma, että tämä todella vaaditaan, koska sen pitäisi noutaa muut init-tiedostot).

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *