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
syntakse.
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. Ilmeisestibash -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).
ssh [email protected] /bin/bash
ei toiminut ' ei toimi?