Supporto SSH per App Web di Azure in Linux

Nota

App Web di Azure su Linux è attualmente disponibile in anteprima pubblica e supporta l'esecuzione di app Web in modo nativo su Linux.

Panoramica

Secure Shell (SSH) è un protocollo di rete di crittografia per l'uso di servizi di rete in modo sicuro. Più comunemente viene usato per accedere in modo sicuro a un sistema da una riga di comando ed eseguire comandi amministrativi in remoto.

App Web in Linux offre il supporto SSH nel contenitore di app con ognuna delle immagini Docker predefinite usate per lo stack di runtime di nuove app web.

Stack di runtime

È anche possibile usare SSH con le immagini Docker personalizzate includendo il server SSH come parte dell'immagine e configurandolo come descritto in questo argomento.

Creare una connessione client

Per creare una connessione client SSH, è necessario avviare il sito principale.

Incollare l'endpoint di Gestione controllo codice sorgente, SCM, per l'app Web nel browser tramite il modulo seguente:

    https://<your sitename>.scm.azurewebsites.net/webssh/host

Se non lo si è già fatto, è necessario eseguire l'autenticazione con la sottoscrizione di Azure per la connessione.

Connessione SSH

Supporto SSH con immagini Docker personalizzate

Affinché un'immagine Docker personalizzata supporti la comunicazione SSH tra il contenitore e il client nel portale di Azure, eseguire la procedura seguente per l'immagine Docker.

Questa procedura viene mostrata nell'archivio del Servizio app di Azure come esempio qui.

  1. Includere l'installazione openssh-server nell'istruzione RUN in Dockerfile per l'immagine e impostare la password per l'account radice su "Docker!".

    Nota

    Questa configurazione non consente connessioni esterne al contenitore. SSH è accessibile solo tramite il sito Kudu/sito, che viene autenticato tramite le credenziali di pubblicazione.

    # ------------------------
    # SSH Server support
    # ------------------------
    RUN apt-get update \ 
      && apt-get install -y --no-install-recommends openssh-server \
      && echo "root:Docker!" | chpasswd
    
  2. Aggiungere un'istruzione COPY a Dockerfile per copiare un file sshd_config nella directory /etc/ssh/. Il file di configurazione deve essere basato sul file sshd_config nell'archivio GitHub di Azure-App-Service qui.

    Nota

    Per fare in modo che la connessione abbia esito positivo, il file sshd_config deve includere quanto segue:

    • Ciphers deve includere almeno uno dei seguenti: aes128-cbc,3des-cbc,aes256-cbc.
    • MACs deve includere almeno uno dei seguenti: hmac-sha1,hmac-sha1-96.
    COPY sshd_config /etc/ssh/
    
  3. Includere la porta 2222 nell'istruzione EXPOSE per Dockerfile. Anche se la password radice è nota, la porta 2222 non è accessibile da Internet. È una porta interna accessibile solo dai contenitori all'interno della rete bridge di una rete virtuale privata.

    EXPOSE 2222 80
    
  4. Assicurarsi di avviare il servizio SSH. Nell'esempio qui viene usato uno script della shell nella directory /bin.

    #!/bin/bash
    service ssh start
    

    Dockerfile usa l'istruzione CMD per eseguire lo script.

    COPY init_container.sh /bin/
      ...
    RUN chmod 755 /bin/init_container.sh 
      ...       
    CMD ["/bin/init_container.sh"]
    

Passaggi successivi

Per altre informazioni su App Web in Linux, vedere i collegamenti seguenti. È possibile pubblicare domande e dubbi nel forum.