Mam serwer sieciowy CentOS 5.7 i chcę zmienić domyślne miejsce, w którym się ląduję podczas łączenia za pomocą SSH.
Obecnie ląduję /home/username
i chcę /home
zamiast tego wylądować .
Włączyłem się jako root i dodałem PermitUserEnvironment yes
do /etc/.ssh/sshd_config
- i jak rozumiem, to zamiata ssh
folder użytkownika na environment
plik. Nie jestem pewien, co dokładnie dodaję do tego pliku środowiska, ponieważ export path=$PATH:$HOME
wydaje się , że nie działa, ani tutaj, ani w moich plikach .bashrc lub .bash_profile (co, jak rozumiem, nie zrobiłoby różnicy czy połączenie SSH jest nieinteraktywną powłoką?).
Z góry dziękuję.
usermod
podczas zmieniania czegokolwiek dotyczących użytkownika, który pisze do/etc/passwd
, aby uniknąć błędów:usermod -d /home user
..bashrc
zrobił mi twarz. To takie proste i oczywiste, szkoda, że o tym nie pomyślałem! Dobra robota. Sława!Należy pamiętać, że
~/.ssh/environment
jest on czytany przed spawnem powłoki lubssh
polecenia, więc (na przykład) ani eksport, ani $ PATH nie mają sensu. Tutaj można ustawić tylko zmienne środowiskowe (nie uruchamiać ogólnych poleceń powłoki).Jeśli pobierzesz środowisko dla nieinteraktywnej powłoki ssh, to zmodyfikuj ją, powinieneś dostać to, co chcesz dla nieinteraktywnych poleceń. Na przykład:
$ ssh mylogin@myserver env
poda ci, od czego zaczyna się ssh na twoim serwerze. Jeśli napiszesz
~/.ssh/environment
plik jako:PATH=/usr/local/bin
i uruchom ponownie powyżej, powinieneś otrzymać „bash: env: polecenie nie znaleziono”. Dobry!
Teraz zbuduj swoją ścieżkę w sposób jawny, na podstawie tego, co było u podstawy z twojego systemu
sshd
(tj. Pierwszego wywołania „ssh .... env”), na przykład (dodając/usr/local/bin
na początku):PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Zauważ też, że nie jest użyteczne próbowanie ustawienia CWD w
~/.ssh/rc
(który jest uruchamiany po~/.ssh/environment
odczytaniu, ale przedssh
powłoką lub poleceniem), ponieważ powłoka uruchomi się (domyślnie) na ścieżce domowej.źródło