Czy istnieje sposób na określenie w .ssh/config
poleceniu takim jak:
ssh -t remote-host "screen -dR screen_name"
dzięki czemu mogę łatwo uzyskać dostęp do screen
sesji 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"
~/bin
pozostaje pierwszy $PATH
, ale jest nieelastyczny i brzydki.
Chciałbym również znaleźć sposób na implementację autouzupełniania hosta dla mojego skryptu niestandardowego.
$1
z$@
. 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
Odpowiedzi:
Aby przydzielić tty tak jak w przypadku
-t
opcji, umieśćRequestTTY force
go w pliku konfiguracyjnym ssh (zwykle w~/.ssh/config
). Aby zawsze wykonać polecenie na serwerze po nawiązaniu połączenia, wprowadźRemoteCommand COMMAND
pozycję, w którejCOMMAND
znajduje się polecenie, które chcesz uruchomić podczas połączenia. Aby sprawdzić inne opcje, sprawdźman ssh_config
.źródło
Użyj mocy Luke!
RequestTTY force
w twoim~/.ssh/config
dla pożądanego hosta.źródło
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).
źródło
Uwaga:
RemoteCommand
rozpoczyna pracę z OpenSSH 7.6 . We wcześniejszej wersji (tj. Bieżący debian 9.9) klient ssh przestanie działać poprawnie (przynajmniej zgit pull
).źródło