Quando si esegue ssh-in o si passa tramite php, alla sessione non viene assegnata una pty. Ho usato ciascuna delle seguenti soluzioni:
RISPOSTA 1: uso ssh -t o ssh -tt per ottenere Pty allocato quando si accede usando ssh:
Mi sono divertito molto ottenere i comandi da eseguire a destra a causa a ptys quando si eseguono sessioni come questa: jenkins shell -> ssh driver -> ssh test -> docker exec. Buona risposta qui: https://unix.stackexchange.com/questions/105422/command-must-be-run-from-a-terminal
"Prova l'opzione -t per ssh Se questo non funziona provare -tt.".
"allocazione pseudo-tty Forza -t. Questo può essere usato per eseguire programmi telematici arbitrari su un computer remoto, che può essere molto utile, ad esempio quando l'implementazione di servizi di menu. Opzioni -t multipla allocazione forza tty, anche se ssh non ha locale tty. "
RISPOSTA 2: uso finestra mobile run -t ... e finestra mobile exec -E
Utilizzare i -t e opzioni -it allocare Pty nella sessione finestra mobile exec.
Anche con exec docker è possibile utilizzare semplicemente l'opzione -u per accedere al contenitore come utenti diversi ed evitare l'uso di su. per esempio.
$ docker exec -u root -it small_hypatia bash
C'è una buona domanda e risposta su questo qui: https://github.com/docker/docker/issues/8631
RISPOSTA 3: uso python per deporre le uova un pty nel tuo guscio
Un bel trucco cute :)
[email protected]:~$ su -
su: must be run from a terminal
$ echo "import pty; pty.spawn('/bin/bash')" > /tmp/asdf.py
$ python /tmp/asdf.py
$ su -
Password:
[email protected]:~#
Sarei interessato a saperne di più sul vostro caso d'uso/configurazione. L'esecuzione di SSH nel contenitore è un anti-pattern. Hai bisogno di cambiare utente al volo (mentre sei nel contenitore?) O come parte di un processo di compilazione (usando un Dockerfile?). – johnharris85
Se Google questo messaggio di errore, ci sono diverse soluzioni. –
Grazie, l'aiuto effettivo di warmoverflow sarebbe apprezzato. Ho trovato una soluzione alternativa per eseguire python ma sarebbe necessaria una soluzione coerente. – SaintHUN