.ssh / config sposób określania przydziału pseudo-tty i wykonywania poleceń

13

Czy istnieje sposób na określenie w .ssh/configpoleceniu takim jak:

ssh -t remote-host "screen -dR screen_name"

dzięki czemu mogę łatwo uzyskać dostęp do screensesji zdalnej za pomocą ssh remote-host?

W tej chwili rozwiązałem ten problem za pomocą skryptu niestandardowego:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binpozostaje pierwszy $PATH, ale jest nieelastyczny i brzydki.

Chciałbym również znaleźć sposób na implementację autouzupełniania hosta dla mojego skryptu niestandardowego.

AB
źródło
Chciałbym zamienić $1z $@. Następnie możesz dodać więcej opcji, nie tylko nazwę hosta. Aby zakończyć, spróbuj wykonać . /usr/share/bash-completion/completions/ssh, a następniecomplete -F _ssh sssh
Alex Stragies,

Odpowiedzi:

17

Aby przydzielić tty tak jak w przypadku -topcji, umieść RequestTTY forcego w pliku konfiguracyjnym ssh (zwykle w ~/.ssh/config). Aby zawsze wykonać polecenie na serwerze po nawiązaniu połączenia, wprowadź RemoteCommand COMMANDpozycję, w której COMMANDznajduje się polecenie, które chcesz uruchomić podczas połączenia. Aby sprawdzić inne opcje, sprawdź man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Brian Albert Monroe
źródło
7

Użyj mocy Luke!

RequestTTY forcew twoim ~/.ssh/configdla pożądanego hosta.

Veaceslav Mindru
źródło
1

Twierdziłbym, że jest to najbardziej elastyczny sposób. Skrypt umożliwia konfigurowanie parametrów, dodawanie warunków, zmianę polecenia w razie potrzeby, wszystko na podstawie danych wejściowych.

Istnieją sposoby „wymuszenia” polecenia authorized_keys. Ale nie znam sposobu wymuszenia alokacji tty poza wierszem poleceń lub wymuszenia polecenia na zdalnym serwerze z plików konfiguracyjnych po stronie lokalnej.

Ja sam mam skrypt, który skanuje plik konfiguracyjny, sprawdza DNS względem różnych domen i ustawia ciąg tytułu emulatora terminala. Nazywam to z ekranu w moim systemie lokalnym ( Ctrl-a g).

Arcege
źródło
0

Uwaga: RemoteCommandrozpoczyna pracę z OpenSSH 7.6 . We wcześniejszej wersji (tj. Bieżący debian 9.9) klient ssh przestanie działać poprawnie (przynajmniej z git pull).

Mathissimo
źródło