To rozwinięcie mojego wcześniejszego pytania . Muszę uruchomić lokalnie przechowywane polecenie (tj. mount /home
) Na zdalnym komputerze podczas logowania ssh. W tej chwili używam:
ssh -t mymachine.example.com 'mount /home ; /bin/bash'
co działa dobrze, ale zastanawiałem się, czy mógłbym wprowadzić to polecenie do siebie, .ssh/config
aby nie musiałem go wpisywać za każdym razem. Znalazłem LocalCommand
opcję, ale nie widzę żadnej RemoteCommand
opcji.
Ważne jest, aby command-to-be-executed
były przechowywane na komputerze lokalnym, ponieważ będą zawierać hasło do otwarcia zaszyfrowanego dysku. To jest powód, dla którego nie mogę umieścić polecenia .profile
na zdalnym komputerze.
~/.ssh/rc
jest ponownie przechowywany na zdalnym komputerze. Jeśli chodzi o komentarz na tematps
wyświetlania moich parametrów wiersza poleceń (w tym hasła), nie przeszkadza mi to. To zdalna maszyna, której nie ufam. Z mojej lokalnej maszyny korzysta tylko ja, więc nikt inny nie ma do niej dostępups
.ps
wyjście pochodzi ze zdalnego komputera. Chodzi o to: wszystko, co dostarczaszssh
jako zdalne polecenie, pojawi się na zdalnym serwerze wps
.Zostało to dodane w OpenSSH 7.6:
ref: https://www.openssh.com/txt/release-7.6
źródło
źródło
Możesz to zrobić we współpracy ze zdalnym urządzeniem w następujący sposób.
Na komputerze lokalnym wpisz polecenie do uruchomienia w zmiennej środowiskowej
LC_SSH_INITIAL_COMMAND
. SSH jest zwykle skonfigurowany do przekazywania wszystkich zmiennych środowiskowych formularzaLC_*
, ponieważ są to zwykle ustawienia regionalne.Na zdalnym komputerze uruchom
eval "$LC_SSH_INITIAL_COMMAND"
za pomocą ustawień poszczególnych kluczy w~/.ssh/authorized_keys
lub z~/.ssh/rc
(uważaj, że jeśli masz~/.ssh/rc
plik, musisz zadbać oxauth
ręczne uruchomienie przekazywania X11).Za pomocą tej
authorized_keys
metody można podobnie uruchomić polecenie po zakończeniu sesji SSH (chyba że proces powłoki zostanie zabity nagle; powinieneś przynajmniej zatrzymać sygnał HUP, aby polecenie zostało wykonane, nawet jeśli połączenie zostanie przerwane).Nie jest to jednak dobry układ do robienia czegoś globalnego, np. Montowania systemu plików. Musisz uważać, aby nie zamontować ponownie, jeśli system plików jest już zamontowany (na przykład z powodu równolegle działającego polecenia SSH) i nie odmontowywać podczas wylogowywania. Moja rekomendacja dla tego przypadku użycia jest jeszcze do zrobienia montażowej wyraźnie, a następnie uruchomić zdalnych poleceń, nie robiąc nic szczególnego, i odłączanie gdy nie chcesz aby uzyskać dostęp do plików.
źródło
Nie próbowałem tego, ale może być podejście
Subsystem
na pilocie,sshd_config
który wykonuje żądane polecenie, czytając niektóre zmienne envSendEnv
na komputerze lokalnym,.ssh/config
aby przekazać takie klucze do zdalnego serweraźródło