Zdalne polecenie w pliku konfiguracyjnym ssh

12

Chciałbym ustawić ssh_config, więc po wpisaniu kończę ssh my_hostnamew określonym folderze. Tak jak bym napisał cd /folder/another_one/much_much_deeper/.

Jak mogę to osiągnąć?

EDYTOWAĆ. Zostało oznaczone jako duplikat „Jak ssh w reż ...”, ale to nie jest moje pytanie.

Wiem, że mogę wykonywać dowolne polecenia, dostosowując je do sshpoleceń. Moje pytanie dotyczy /ssh_configpliku, a nie polecenia.

Kazz
źródło
Wyjaśniłem moje pytanie.
Kazz
Nie ma w tym nic man ssh_config. Najbliżej jest LocalCommand, ale nie można go użyć do interaktywnego polecenia.
lgeorget
1
Czy możesz wyjaśnić (w swoim pytaniu), dlaczego uważasz, że zmiana musi zostać wprowadzona ssh_config? Prawdopodobnie są lepsze miejsca do skonfigurowania katalogu początkowego i pomocne byłoby zrozumienie, dlaczego istnieje to konkretne ograniczenie w możliwym rozwiązaniu.
roaima
1
Fakt, że „nie da się tego zrobić ssh_config” nie czyni z niego duplikatu „zrób to w Bash”. „Nie możesz tego zrobić” to całkowicie poprawna odpowiedź.
Franklin Yu,
1
@terdon Jednak fakt „nie jest to możliwe” może z czasem ulec zmianie. Tak, teraz jest to możliwe. Teraz (podobnie jak wszyscy w przyszłości, aby to zobaczyć) potrzebuję nowej odpowiedzi i utknęliśmy tutaj. Jeśli to nie zostanie ponownie otwarte, wyobrażam sobie, że pożądaną ścieżką jest stworzenie nowego pytania (i odpowiedź na nie)?
Franklin Yu

Odpowiedzi:

19

Nie było na to sposobu, dopóki OpenSSH 7.6 . Z instrukcji :

RemoteCommand

Określa polecenie do wykonania na zdalnym komputerze po udanym połączeniu z serwerem. Ciąg poleceń rozciąga się na koniec wiersza i jest wykonywany za pomocą powłoki użytkownika. Argumenty, aby RemoteCommandzaakceptować tokeny opisane w sekcji ŻETONY .

Więc teraz możesz mieć

RemoteCommand cd /tmp && bash

Został wprowadzony w tym zatwierdzeniu .

Franklin Yu
źródło
5
Dodaj, RequestTTY forcejeśli zdalne polecenie wymaga TTY. Na przykład:tmux new -As my-session
Aaron Blenkush,
To jest sshopcja zabójstwa Dzięki!
nhed
Uniemożliwia to uruchamianie innych poleceń, na przykład ssh my_hostname lsnie powiedzie się Cannot execute command-line and remote command.. Powoduje to, że inne narzędzia używające ssh, takie jak git i rsync, również zawodzą.
remram
2

Chciałbym ustawić ssh_config, więc po prostu wpisując ssh my_hostname

To niemożliwe. Nie ma możliwości osiągnięcia tego w ssh_config. Najbliżej jest ustawienie aliasu bash lub funkcji bash, takiej jak

myssh() {
    ssh -t $1 "cd /dir/; bash"
}
Jakuje
źródło
1

Odpowiedziałem innym biletem, zanim somoene zauważyła, że ​​to oryginał.

Jeśli używasz komputera Mac, zalecam korzystanie z iTerm2 i utworzenie profilu. Umieść ssh my_hostnamew wierszu polecenia, a następnie dodaj polecenie cd /folder/another_one/much_much_deeper/w polu tekstowym wysyłania na początku. Kiedy połączysz się z sesjami, będzie ssh do twojej nazwy hosta i cd do katalogu w twoim przypadku, lub wykona polecenie.

Govna
źródło