zadat shell pro relaci ssh

Přihlašuji se na vzdálený server pomocí ssh jako uživatel www-data. Uživatel www-data na serveru má svůj výchozí shell nastavený na /bin/sh a když se přihlásím, zobrazí se jako shell pomlčka. Pak mohu zadat bash a získat bash shell.

Chtěl bych se přihlásit přímo do bash, když I ssh in. Ale já nechci změnit výchozí shell na serveru. Chci, aby moje změna ovlivnila pouze relaci ssh.

Zkoušel jsem vložit command="/bin/bash" infront mého veřejného klíče v .ssh/authorized_keys, ale má to další vedlejší účinek: zatímco při přihlašování funguje bash jako výchozí shell, scp přestal fungovat. Už nemohu scpovat soubory na nebo z remore serveru.

Jak mohu nastavit bash jako výchozí prostředí pro relaci ssh, aniž by došlo k porušení jiných aplikací?

Komentáře

  • ssh [email protected] /bin/bash nepracoval jsem '?
  • @DopeGhoti: ' m také na to zvědavý, ale mám podezření, že ' bude mít stejný problém jako jeho

syntaxe.

  • Pochybuji, protože její zadání na ssh by nemělo mít na scp.
  • Odpověď

    Mám podobný problém v jednom systému Používám (výchozí prostředí je bash, chci ksh93 a chsh to práce).

    Mým řešením přizpůsobeným vaší situaci je exec požadovaný shell z ~/.profile, který Dash čte při spuštění. Bash se nedotkne ~/.profile, pokud nenajde ~/.bash_profile nebo ~/.bash_login (v v tomto pořadí, viz příručka Bash).

    # 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 nastavuje SSH_TTY v interaktivních relacích SSH, takže my “ znovu zkontrolujeme, zda je nastaven (neprázdný řetězec), než se ujistíte, že je Bash k dispozici, a proveďte jej. Nastavuji a exportuji SHELL v případě, že se na to podívá jakákoli jiná aplikace, a vyhnout se spuštění Bash do nekonečné smyčky kvůli chybějícím ~/.bash_profile a ~/.bash_login a snaží se tak znovu spustit ~/.profile.

    Komentáře

    • děkuji. S jednou důležitou úpravou váš navrhovaný přístup funguje. Provedení $SHELL -l způsobilo vidličkovou bombu. bash -l čte také .profile. Když vynecháte -l, vše funguje podle očekávání.
    • Pravděpodobně proto, že vám chybí oba ~/.bash_profile a ~/.bash_login?
    • Podívejte se na moji úpravu mé odpovědi, která if prohlášení selže, pokud ' již používáme Bash. (nejste si jisti, zda je to skutečně nutné, protože by místo toho měl vyzvednout další soubory init).

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *