Jak ustawić powłokę używaną, gdy SSH użytkownika do serwera. Na przykład nie mogę znieść BASH i muszę używać ZSH, jak to zrobić, aby ZSH był ładowany wraz z moim profilem ( .zsh_profile
), gdy ssh na maszynę.
Nie chcę też przekazywać wiązki parametrów za pomocą ssh, czy nie mogę ustawić domyślnej powłoki?
/etc/shells
aby powłoka była dostępna do wyboru.passwd
pakiecie .man chsh
zmienia powłokę, nie zawsze działaAlternatywnie możesz
exec /bin/zsh
włożyć skrypt logowania do bash. To zastąpi instancję bash z powłoką.Lub możesz to zrobić
ssh host "zsh -l"
źródło
L
ssh -t
jest wymagane, aby uzyskać TTY dla ostatnich opcji. Domyślnie, jeślizsh -l
podano polecenie (podobne ), OpenSSH wykonałby powłokę niezalogowaną, która nie przydzieliłaby TTY dla ciebie i-l
nie zmieniłaby tego (ponieważ jest to wykonywane po zalogowaniu).Edytuj / etc / passwd (jeśli masz uprawnienia lub poproś administratora systemu) o zmianę domyślnej powłoki.
źródło
Jeśli nie możesz zmienić domyślnej powłoki,
ssh -t user@host 'zsh -l'
działa.-t
Flaga wymusza podział pseudo-tty, a-l
tarła flagę powłokę logowania .źródło
Nie jestem pewien, w jaki sposób możesz przenieść swój lokalny
.zshrc
serwer na serwer zdalny (to bez trwałego przechowywania go tam), to działa dla mnie, aby zmienić moją powłokę logowania na serwerze zdalnym.Ponieważ jest to wspólne konto, mogę używać
zsh
tej metody tylko dla siebie.Dodaj to do
~/.ssh/config
pliku na komputerze lokalnym.Może być hackerski sposób na osiągnięcie tego, czego szukasz, na przykład poniżej.
OSTRZEŻENIE Nie ma żadnych gwarancji i nie wygląda na „mądre”, ale udało mi się umieścić mój plik lokalny na serwerze i użyć go w powłoce logowania.
Jak to działa?
RemoteCommand
określa, co należy uruchomić po zdalnej stronie.LocalCommand
określa, co należy uruchomić na komputerze lokalnym, który służy do kopiowania pliku lokalnego na serwer zdalny w celu uzyskania go. Oto haczyk, dzieje się to dopiero po „udanym” połączeniu ze zdalnym hostem.Znaczenie:
sleep
sftp
do umieszczenia pliku na serwerze zdalnym, serwer zdalny budzi sięsleep
i źródle skryptów.To jest super hackerskie, chciałbym wiedzieć, czy jest też lepszy sposób.
Aktualizacja: Można tego użyć zamiast „długiego” czasu snu:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
źródło