-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
Hey,
Thx for this script !
Since i use sshr (my alias name for that, because replace ssh alias cause issue for git and other tools in local terminal), i have big slow connexion (ssh my_alias take 1 second, and sshr my_alias is approx 5/10sec (with fiber-link))
Have "debug" with my new best friend, but don't know what is your security return with this information :
1. Pourquoi sshr docker est très lent
Le ralentissement survient après la ligne Sending command: echo 'H4s…', c’est-à-dire lors de l’exécution de la longue commande envoyée via SSH.
Cause probable :
La commande envoyée par sshr() contient une énorme chaîne base64 gzip-é, injectée dans un echo '...'.
Lorsque tes fichiers sont un peu lourds (même quelques centaines de ko après base64), OpenSSH :
doit envoyer énormément de données au moment de la requête exec,
met du temps à accepter le PTY (car la commande est volumineuse),
doit s’assurer que le payload n’est pas interprété par le shell.
Cela explique l’attente entre :
exec request accepted on channel 0
et la première activité du shell.
Le comportement “ssh simple = rapide” est normal, car rien n’est envoyé dans le canal exec.
Solution simple : ne pas injecter les fichiers dans la commande.
Deux options efficaces :
Option A — Copier les fichiers via scp avant de lancer la session
scp ~/.sshtools/.bashrc_remote ~/.sshtools/.vimrc_remote ~/.sshtools/.webshare.py docker:/tmp/
ssh docker 'bash --rcfile /tmp/.bashrc_remote'
Tu peux automatiser ça dans sshr.
Option B — Passer les fichiers via ssh mais en streaming, sans base64 dans un echo
Beaucoup plus rapide :
sshr() {
ssh "$1" 'cat > /tmp/.bashrc_remote' < ~/.sshtools/.bashrc_remote
ssh "$1" 'cat > /tmp/.vimrc_remote' < ~/.sshtools/.vimrc_remote
ssh "$1" 'cat > /tmp/webshare.py' < ~/.sshtools/.webshare.py
ssh -t "$1" 'bash --rcfile /tmp/.bashrc_remote'
}
Avantages :
aucun base64 gigantesque,
aucun echo lent,
transfert direct via SSH (beaucoup plus rapide).Have fun !
Metadata
Metadata
Assignees
Labels
No labels