Abbiamo risolto questo problema aggiungendo l'aggiunta di -n (per reindirizzare std da /dev/null) e -t (forza l'allocazione pseudo-tty)
Esempio:
ssh -t -n [email protected] command
Il problema era davvero il mio script di accesso, anche se non aveva a che fare con la richiesta di un terminale (l'avevo sospettato e testato con -t
e -T
opzioni). Il problema era che il mio .bashrc
stava eseguendo un exec
(in questo caso a zsh
- perché il nostro sistema non consente chsh
a zsh
).
La riga incriminata:
test -f /usr/bin/zsh && exec /usr/bin/zsh
Risolto controllando prima la shell interattiva e uscendo in tal caso:
[ -z "$PS1" ] && return
test -f /usr/bin/zsh && exec /usr/bin/zsh
Quindi, essenzialmente, perché la shell era in esecuzione in zsh
, ssh
stava aspettando che finisse, cosa che non è mai accaduta.
Sono un po' confuso sul perché il mio .bashrc
veniva chiamato - pensavo fosse solo per shell interattive, ma lo scopo esatto e l'ordine dei vari script di init è qualcosa che non credo che imparerò mai.
Spero che questo possa essere utile ad altri che hanno una sorta di exec
nei loro script di avvio.
A proposito, le altre due risposte erano sulla strada giusta, quindi non ero completamente sicuro se avrei dovuto "rispondere" o semplicemente commentare le loro risposte. Se rispondere alla mia stessa domanda è moralmente sbagliato su StackOverflow, fammelo sapere e farò penitenza. Grazie agli altri risponditori.