Réponses:
Non, la bonne façon de tuer autosshest simplement de tuer le processus autossh, rien d'autre.
La raison est
# file $(which autossh)
/usr/bin/autossh: POSIX shell script, ASCII text executable
c'est autosshsimplement un script shell, pas un service . Il démarre un nouveau programme, dans sa toute dernière ligne,
exec /usr/lib/autossh/autossh "$@"
encore une fois pas un service. Quant à exec(vous pouvez le vérifier dans le wiki des pirates Bash ), il s'agit d'une commande intégrée au shell qui remplace le shell actuel par la commande suivante ( /usr/lib/autossh/autossh "$@"dans ce cas) sans démarrer un nouveau processus. Donc, la seule façon d'arrêter autosshest de tuer le script appelant, par exemple
pkill -3 autossh
(merci à dviljoen d' avoir souligné l'importance d'utiliser l' indicateur -3 , voir ci-dessous). Par ailleurs, la suppression de la sshconnexion ne fonctionnera pas, car la commande appelante ( c'est-à - dire celle ci-dessus) démarrera simplement une nouvelle connexion dès qu'elle réalisera que l'ancienne a été supprimée.  
SIGTERMest la valeur par défaut, et celle-là l'est 15. SIGQUITest 3, voir superuser.com/questions/352147/what-does-kill-3-mean et en.wikipedia.org/wiki/Kill_(command) - Aussi, FWIW, je viens de vérifier et -15ne l'arrête pas, SIGTERMne peut donc pas être utilisé.
                    pkillsans signal (= le default) ne se termine pas non plus autossh.
                    lancez auto ssh avec:
AUTOSSH_PIDFILE=/var/run/tunnel.pid autossh
tuez-le avec:
kill pid
BTW
pkill -9 autossh est un tort
-9s'assure que le processus ne se termine pas correctement, donc le sshprocessus est toujours là quand le autosshprocessus est tué
sans -9est toujours mauvais, si vous avez plusieurs tunnels en cours d'exécution, pkillles tuera tous
la bonne façon est de définir AUTOSSH_PIDFILEenv var alors killque pid seulement
Je sais que cela a été répondu, mais contrairement aux commentaires ci-dessus, l'utilisation pkill -3 autosshne tue PAS les processus enfants sshd pour moi.
J'utilise cette fonction dans mon .bashrcfichier. 
Fondamentalement, c'est comme ajouter un --killargument à autossh.
  if [ "$1" = "--kill" ]; then
    ps aux | 
    grep -P "(/usr/bin/ssh|/usr/lib/autossh/autossh)\s.*$2" |
    awk '{print $2}' |
    xargs -r kill
  else
    $(which autossh) "$@"
    echo "" # prevents line wrapping when you kill the ssh process
  fi
Vous pouvez exécuter which sshet which autosshvérifier les chemins sur votre système.
Tant que le premier argument ne l'est pas --kill, il passe simplement les arguments à autossh.
Ce script tue les instances autossh & ssh. Ceci est important si vous utilisez la redirection de port car, en tuant UNIQUEMENT l'instance autossh ne tue pas le tunnel, cela l'empêche simplement de se reconnecter si / quand il se déconnecte finalement.
Vous pouvez également spécifier un terme de recherche (nom d'hôte) pour supprimer uniquement des tunnels spécifiques.
autossh --kill dbserver1tue uniquement les connexions à dbserver1 
autossh --kill dbservertuera dbserver1, dbserver2, etc. 
autossh --kill dbservertuera TOUTES les connexions autossh   
Pour clarifier, il DEVRAIT tuer uniquement les sessions SSH démarrées par autossh.
Si vous exécutez ps aux | grep sshalors que vous avez à la fois des sessions autossh et ssh en cours d'exécution, vous verrez que celles démarrées par autossh utilisent le chemin complet (/ usr / bin / ssh et / usr / lib / autossh / autossh). 
Ce script ne fait correspondre les résultats qu'aux processus démarrés avec le chemin speicifc. Je l'ai fait parce que je (et je suppose que la plupart des gens) tapent généralement sshet non le chemin complet, ce qui l'empêche de tuer mes sessions ssh normales.
J'espère que cela aidera les autres.
$(which autossh)au lieu de simplement autossh?