> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/gateway/it/getting-started/devolutions-gateway-configuration-on-linux.md).

# Configurazione di Devolutions Gateway su Linux

Installi e configuri Devolutions Gateway su Ubuntu Linux, inclusi i certificati TLS, le porte del firewall e il collegamento a Devolutions Server.

Installare ed eseguire Devolutions Gateway su Linux è rapido e semplice, purché siano soddisfatti alcuni prerequisiti. Per illustrare l'installazione e la configurazione è stato utilizzato Ubuntu 22.04 LTS.

{% hint style="warning" %}
Per la configurazione sono necessari Devolutions Server o Devolutions Cloud, oltre a una licenza di Devolutions Gateway.
{% endhint %}

### Installare Devolutions Gateway

1. Vada alla pagina [Devolutions Gateway GitHub Release](https://github.com/Devolutions/devolutions-gateway/releases/) e scarichi il file **.deb** della versione più recente.
2. Inserisca quanto segue dalla riga di comando: `wget https://github.com/Devolutions/devolutions-gateway/releases/download/v2024.3.2/devolutions-gateway_2024.3.2.0_amd64.deb`
3. Installi il pacchetto utilizzando l'utility `dpkg`: `sudo dpkg -i devolutions-gateway_2024.3.2.0_amd64.deb`

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>I pacchetti di configurazione e i binari si trovano nelle seguenti posizioni:</p><ul><li><strong>Configurazione</strong>: <code>/etc/devolutions-gateway</code></li><li><strong>Binario</strong>: <code>/usr/bin/devolutions-gateway</code></li></ul></div>

### Aggiornare Devolutions Gateway

Per aggiornare Devolutions Gateway su Linux, scarichi il pacchetto più recente come spiegato nella sezione precedente ed esegua il comando di installazione. Il pacchetto verrà installato sopra l'installazione esistente e preserverà le configurazioni.

### Installare il modulo PowerShell del gateway

Si consiglia di utilizzare il modulo PowerShell del gateway per configurare e gestire l'istanza di Devolutions Gateway su Linux.

1. Installi PowerShell con questo comando:

   ```powershell
   source /etc/os-release
   wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
   sudo dpkg -i packages-microsoft-prod.deb
   rm packages-microsoft-prod.deb
   sudo apt-get update
   sudo apt-get install -y powershell
   ```
2. Installi il modulo PowerShell di Devolutions Gateway:

   ```powershell
   Install-Module -Name DevolutionsGateway
   Import-Module -Name DevolutionsGateway
   ```

Una volta installato, la configurazione di Devolutions Gateway può essere avviata, arrestata, visualizzata o modificata.

### Configurare i certificati

Una corretta attendibilità dei certificati tra i sistemi è fondamentale per il funzionamento di Devolutions Gateway. Funzionalità come i WebSocket, utilizzati nelle visualizzazioni dashboard web di RDP, SSH, ecc., richiedono un certificato correttamente attendibile. Per la maggior parte dei sistemi di produzione, l'ideale sarebbe un certificato di un'autorità ufficiale come Let's Encrypt. È possibile generare certificati autofirmati, come nell'esempio mostrato di seguito, ma richiedono una configurazione aggiuntiva per l'attendibilità. È possibile generare certificati su qualsiasi sistema e utilizzarli all'interno di Devolutions Gateway, purché rispettino i requisiti relativi ai certificati.

#### Generare un certificato LetsEncrypt su Ubuntu 22.04 LTS tramite Certbot

Un'opzione consiste nel generare un certificato LetsEncrypt con l'utility Certbot. Per installare la versione più recente, può utilizzare il gestore di pacchetti snap. A seconda della distribuzione Ubuntu, i repository APT predefiniti potrebbero non contenere la versione più recente del software. In questo esempio, la verifica del dominio viene utilizzata con Cloudflare come provider DNS.

1. L'esempio seguente mostra Certbot installato ed eseguito come utente root, ma Devolutions Gateway con un utente diverso.

   ```shell
   sudo snap install certbot --classic
   sudo snap set certbot trust-plugin-with-root=ok
   sudo snap install certbot-dns-cloudflare
   ```
2. Quando utilizza Cloudflare, generi un token API con ambito utente o account, utilizzando il modello **Edit zone DNS**. Una volta ottenuto il token API, crei la cartella contenitore e il corrispondente file `.ini` in cui inserire il token API.

   ```shell
   sudo install -d -m 0700 /root/.secrets
   sudo nano /root/.secrets/cloudflare.ini
   sudo chmod 0600 /root/.secrets/cloudflare.ini
   ```
3. Richieda un certificato per il dominio del suo Devolutions Gateway utilizzando il plugin DNS di Cloudflare. Sostituisca il valore `gateway.mydomain.com` di seguito con il suo dominio.

   ```shell
   certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d gateway.mydomain.com --cert-name gateway
   ```
4. Modifichi il file di configurazione `gateway.json` per aggiungere le righe seguenti e utilizzare il certificato appena generato, tramite il modulo PowerShell di Devolutions Gateway. I comandi seguenti modificano le variabili di configurazione `TlsCertificateFile`, `TlsPrivateKeyFile` e `Listeners`.

   ```powershell
   Import-Module DevolutionsGateway
   Set-DGatewayConfig -TlsCertificateFile "/etc/letsencrypt/live/gateway/fullchain.pem" -TlsPrivateKeyFile "/etc/letsencrypt/live/gateway/privkey.pem" -Listeners @(
   @{
           "InternalUrl" = "tcp://*:8181"
           "ExternalUrl" = "tcp://*:8181"
       }
       @{
           "InternalUrl" = "https://*:7171"
           "ExternalUrl" = "https://*:7171"
       }
   )
   ```
5. Prima di poter riavviare Devolutions Gateway per utilizzare il nuovo certificato, deve consentire all'utente che esegue Devolutions Gateway di leggere i file del certificato. Si presume che il suo utente si chiami **devolutions** e che il certificato si chiami **gateway**. Sta concedendo i diritti di attraversamento alle directory e i diritti di lettura ai file del certificato stessi.

   ```shell
   sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/live
   sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/live/gateway
   sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/archive
   sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/archive/gateway
   sudo setfacl -m u:devolutions:r /etc/letsencrypt/live/gateway/fullchain.pem
   sudo setfacl -m u:devolutions:r /etc/letsencrypt/live/gateway/privkey.pem
   sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/fullchain*.pem
   sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/privkey*.pem

   # Reconfigure to add a deploy hook
   sudo certbot reconfigure --cert-name gateway --deploy-hook "sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/fullchain*.pem; sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/privkey*.pem; systemctl restart devolutions-gateway.service"
   ```
6. Riavvii Devolutions Gateway utilizzando il comando `systemctl` o il modulo PowerShell di Devolutions Gateway.

   ```shell
   # Restart Gateway using systemctl
   systemctl restart devolutions-gateway.service
   ```

   ```powershell
   # Restart Gateway using the Devolutions Gateway PowerShell module, assuming it is run in a pwsh shell.
   Import-Module DevolutionsGateway; Restart-DGateway
   ```

**Rinnovare il certificato LetsEncrypt**

Per impostazione predefinita, con il metodo di installazione Snap viene utilizzato un timer systemd (anziché un cron job), che viene eseguito due volte al giorno (sebbene rinnovi un certificato solo entro 30 giorni dalla sua scadenza). Per forzare un rinnovo, può utilizzare il comando seguente.

```
sudo certbot renew
# To perform a renewal dry run and force a restart of the service, you can use the following command:
# sudo certbot renew --dry-run --run-deploy-hooks
```

#### Generare un certificato autofirmato su Ubuntu 22.04 LTS tramite OpenSSL

Utilizzando l'utility OpenSSL, generi un certificato direttamente dalla riga di comando. Il certificato deve poi essere collocato direttamente nella directory di configurazione **/etc/devolutions-gateway**.

```powershell
sudo openssl req -x509 -subj "/C=CA/ST=Quebec/L=Lavaltrie/O=Devolutions/CN=ubuntu-2204" -addext "subjectAltName = IP:10.10.0.20" -addext "extendedKeyUsage = serverAuth" -nodes -days 365 -newkey rsa:2048 -keyout /etc/devolutions-gateway/server.key -out /etc/devolutions-gateway/server.crt
```

La richiesta di certificato avrà un aspetto diverso per ogni configurazione.

Tenga presente che il certificato **deve** includere un'estensione **Subject Alternative Name (SAN)** con un **nome DNS** o un **indirizzo IP**, e dovrebbe inoltre contenere l'estensione **Extended Key Usage (EKU)** con lo scopo **Server Authentication** (`serverAuth`). Ciò è necessario perché i sistemi operativi e i browser moderni, tra cui **Google Chrome** e **macOS,** rifiutano i certificati che non dispongono di un SAN o dell'EKU appropriato, anche se il Common Name (CN) è impostato. Se necessario, è possibile allentare questo requisito impostando l'opzione `TlsVerifyStrict` su `false`, ma ciò non è consigliato.

<table data-header-hidden><thead><tr><th width="144"></th><th></th></tr></thead><tbody><tr><td><strong>Opzioni di personalizzazione</strong></td><td><strong>Spiegazione</strong></td></tr><tr><td><code>req</code></td><td>Crea ed elabora richieste di certificato, inclusi i certificati autofirmati, in formato PKCS#10.</td></tr><tr><td><code>-x509</code></td><td>Genera un certificato autofirmato.</td></tr><tr><td><code>-subj</code></td><td><p>Definisce il soggetto del certificato dalla riga di comando. Non devono esserci spazi tra le sezioni</p><ul><li><code>/C</code> - Paese con codice a 2 cifre, come “CA” per il Canada o “US” per gli Stati Uniti.</li><li><code>/ST</code> - Stato o provincia, come Quebec o California.</li><li><code>/L</code> - Località, come Lavaltrie o Sacramento.</li><li><code>/O</code> - Organizzazione, come Devolutions o Microsoft.</li><li><code>/CN</code> - Common name, qui <code>ubuntu-2204</code> (come mostrato dal comando <code>hostname</code>).</li></ul></td></tr><tr><td><code>-addext</code></td><td><p>Per aggiungere un Subject Alternate Name (SAN), può utilizzare questo parametro per definire una voce IP o DNS.</p><ul><li><code>"subjectAltName = IP:10.10.0.20"</code></li><li><code>"subjectAltName = DNS:ubuntu-2204"</code></li></ul></td></tr><tr><td><code>-nodes</code></td><td>Non cifra la chiave privata creata.</td></tr><tr><td><code>-days</code></td><td>Il numero di giorni di validità del certificato.</td></tr><tr><td><code>-newkey</code></td><td>Definisce l'algoritmo e la dimensione in bit, qui viene utilizzato <code>rsa:2048</code>.</td></tr><tr><td><code>-keyout</code></td><td>La posizione in cui creare il file della chiave privata.</td></tr><tr><td><code>-out</code></td><td>La posizione in cui creare il file della chiave pubblica.</td></tr></tbody></table>

#### Rendere attendibile il certificato autofirmato su Ubuntu

Il certificato TLS ha due scopi:

1. Protegge l'API di gestione;
2. Protegge qualsiasi tunnel da client a Gateway in cui il gateway può ispezionare o filtrare il traffico (siti web, Gateway Tunnel, SCP/SFTP, ecc.).\
   Per i protocolli opachi come RDP o SSH, Devolutions Gateway inoltra semplicemente byte già cifrati, ma il certificato è comunque necessario per i controlli di integrità del gateway e per funzionalità future.

Una volta creato il certificato autofirmato, il certificato all'interno del sistema Ubuntu dovrà essere considerato attendibile. Per renderlo attendibile a livello di sistema, utilizzi il seguente insieme di comandi:

```powershell
cd /etc/devolutions-gateway
sudo apt-get install -y ca-certificates
sudo cp server.crt /usr/local/share/ca-certificates
sudo update-ca-certificates
```

Il pacchetto `ca-certificates` potrebbe essere già installato. Eseguendo il comando `update-ca-certificates` verrà creato un symlink in `/etc/ssl/certs` verso il file del certificato copiato in **/usr/local/share/ca-certificates**.

{% hint style="warning" %}
Se ciò viene fatto in Firefox, compariranno diversi errori di attendibilità, poiché il browser non utilizza l'archivio certificati di sistema. La loro [documentazione](https://support.mozilla.org/en-US/kb/setting-certificate-authorities-firefox) offre alcune soluzioni a questo problema.
{% endhint %}

#### Rendere attendibile il certificato autofirmato su Windows

Dopo la creazione del certificato autofirmato, sarà necessario renderlo attendibile su Devolutions Server. I file **server.crt** e **server.key** dovranno essere trasferiti sul sistema Windows; oppure copi e incolli il contenuto in dei file (ad esempio **sudo cat server.crt** in Ubuntu e copiando il risultato in un file di testo su Windows).

{% hint style="warning" %}
Salti questa sezione se Devolutions Server non è in esecuzione su Windows.
{% endhint %}

1\. Copi la chiave pubblica su Windows (nell'esempio, **C:\Gateway** è una posizione temporanea):\
`sudo cat server.crt`

2. Copi il contenuto in un file **server.crt**.
3. Copi la chiave privata su Windows:\
   `sudo cat server.key`
4. Copi il contenuto in un file **server.key**.
5. Crei un file PFX utilizzando lo strumento a riga di comando certutil di Windows. Perché funzioni, il file della chiave deve avere lo stesso nome del file **crt**, differendo solo per l'estensione:\
   `certutil -mergepfx server.crt server.pfx`
6. Importi il file PFX nell'[archivio certificati Autorità di certificazione radice attendibili](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/trusted-root-certification-authorities-certificate-store).
   1. Faccia doppio clic sul file **server.pfx** per avviare la procedura guidata di importazione e scelga ***Computer locale***.
   2. Clicchi su ***Avanti*** e accetti la richiesta.
   3. Clicchi su ***Avanti***.
   4. Inserisca la password che ha specificato con il comando `certutil`.
      * Facoltativamente: scelga ***Contrassegna questa chiave come esportabile***.
   5. Scelga l'opzione ***Colloca tutti i certificati nel seguente archivio***.
   6. Selezioni ***Autorità di certificazione radice attendibili*** con il pulsante ***Sfoglia...***.
   7. Clicchi su ***Avanti***.
   8. Clicchi su ***Fine*** per completare l'importazione.

### Aprire le porte del firewall di Ubuntu

Se il sistema Linux utilizza UFW (Uncomplicated Firewall) per gestire il firewall basato su iptables, esegua i seguenti comandi per aprire le porte necessarie:

```powershell
sudo ufw status
sudo ufw allow 7171
sudo ufw allow 8181
sudo ufw status
```

### Modificare la configurazione di Devolutions Gateway

Alla configurazione predefinita di un gateway contenuta nel file **/etc/devolutions-gateway/gateway.json** devono essere aggiunte le direttive relative al certificato (l'`InternalUrl` dovrà utilizzare HTTPS):

```powershell
{
  "Id": "YOUR-UNIQUE-GUID",
  "ProvisionerPublicKeyFile": "provisioner.pem",
  "ProvisionerPrivateKeyFile": null,
  "Listeners": [
    {
      "InternalUrl": "tcp://:8181",
      "ExternalUrl": "tcp://:8181"
    },
    {
      "InternalUrl": "http://:7171",
      "ExternalUrl": "https://:7171"
    }
  ]
}
```

Modifichi il file sopra indicato in modo che corrisponda a quanto segue, presupponendo che sia **server.crt** sia **server.key** si trovino nella stessa directory di **gateway.json** (si consiglia di utilizzare l'editor di file integrato Nano):

```powershell
{
  "Id": "YOUR-UNIQUE-GUID",
  "ProvisionerPublicKeyFile": "provisioner.pem",
  "ProvisionerPrivateKeyFile": null,
  "TlsCertificateFile": "server.crt",
  "TlsPrivateKeyFile": "server.key",
  "Listeners": [
    {
      "InternalUrl": "tcp://:8181",
      "ExternalUrl": "tcp://:8181"
    },
    {
      "InternalUrl": "https://:7171",
      "ExternalUrl": "https://:7171"
    }
  ]
}
```

#### Riavviare Devolutions Gateway

Con la nuova configurazione in atto, riavvii Devolutions Gateway. Ciò può essere fatto con il comando `systemctl`:

```powershell
sudo systemctl restart devolutions-gateway.service
sudo systemctl status devolutions-gateway.service
```

In alternativa, è possibile utilizzare anche i comandi PowerShell `Stop-DGateway` e `Start-DGateway`.

### Collegare Devolutions Gateway a Devolutions Server

#### Copiare la chiave pubblica da Devolutions Server a Devolutions Gateway su Linux

1. Acceda alla console web di Devolutions Server e vada su ***Administration*****&#x20;–&#x20;*****Devolutions Gateway***.
2. Clicchi sul pulsante ***More*** e scelga l'opzione ***Download public key***.
3. Copi il contenuto del file **gateway\_public\_key.pem** scaricato su Windows.
4. Sostituisca il contenuto del file **/etc/devolutions-gateway/provisioner.pem** (si consiglia l'utility Nano) con il contenuto copiato da Windows.
5. Riavvii Devolutions Gateway con il comando `sudo systemctl restart devolutions-gateway.service`.

#### Configurare Devolutions Gateway in Devolutions Server

Vada all'interfaccia web di Devolutions Server in cui verrà aggiunto il Devolutions Gateway Linux appena configurato.

{% hint style="warning" %}
Salti questa sezione se sta installando Devolutions Gateway con Devolutions Cloud.
{% endhint %}

1. Acceda alla console web di Devolutions Server e vada su ***Administration*** – ***Devolutions Gateway***.
2. Clicchi sul pulsante ***Add*** (***+***).
3. Selezioni ***Gateway***.
4. Inserisca quanto segue (questi valori cambieranno a seconda della configurazione).
   1. ***Name***: Linux Gateway
   2. ***Devolutions Gateway URL***: `https://10.10.0.20:7171`
   3. ***TCP Hostname***: `Ubuntu-2204`
5. Clicchi su ***Save***.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Clicchi sul menu delle opzioni <em><strong>More</strong></em> del gateway e scelga l'opzione <em><strong>Publish revocation list</strong></em> se l'elenco di revoche non è aggiornato.</p></div>

### Risolvere gli host in Ubuntu

Il sistema Devolutions Gateway ospitato su Linux deve essere in grado di risolvere gli indirizzi richiesti da Devolutions Server. Il metodo più semplice per effettuare dei test è modificare il file hosts.

Si connetta al seguente sistema:

* **Hostname**: `it-help-dc`
* **Nome di dominio completo (FQDN)**: `it-help-dc.ad.it-help.ninja`
* **Indirizzo IP**: `10.10.0.3`

Apra il file hosts per la modifica con `sudo nano /etc/hosts` per aggiungere l'host in Ubuntu.

### Aprire una sessione RDP basata sul web

Il gateway può ora connettersi agli host. Poiché l'host `it-help-dc` è stato aggiunto come risolvibile in Ubuntu, può essere utilizzato per connettersi in una sessione web.

{% hint style="info" %}
Le sessioni web richiedono un gateway attivo configurato per la voce e l'utente che avvia la sessione dovrà disporre di una licenza Remote Desktop Manager Team edition o di una licenza Devolutions Launcher assegnata.

Inoltre, se sono state apportate modifiche alle assegnazioni delle licenze, potrebbe essere necessario disconnettersi e riconnettersi per visualizzare l'opzione di avvio della connessione web.
{% endhint %}

1. Nell'interfaccia web di Devolutions Server, clicchi su ***Add***. Selezioni una voce di sessione ***RDP***.
2. Clicchi su ***Continue***.
3. Inserisca un ***Name*** e un ***Host*** che deve essere risolvibile dall'installazione Linux di Devolutions Gateway.
4. Clicchi su ***Add***.
5. Inserisca o colleghi le credenziali necessarie alla sessione RDP e clicchi su ***Add***.
6. Nella scheda ***VPN/Tunnel/Gateway***, scelga Devolutions Gateway come tipo di VPN.
7. Imposti l'opzione ***Connect*** su ***Always connect***.
8. Scelga il gateway corretto.
9. Clicchi su ***Add***.
10. Clicchi su ***Open in web client***.

### Aprire una sessione RDP di Remote Desktop Manager

Se la voce è già configurata nell'interfaccia web di Devolutions Server, può essere avviata da Remote Desktop Manager quando si è connessi allo spazio di lavoro di Devolutions Server.

{% hint style="warning" %}
Salti questa sezione se sta installando Devolutions Gateway con Devolutions Cloud.
{% endhint %}

Quando si crea una nuova voce da Remote Desktop Manager, la procedura è simile a quella di Devolutions Server.

1. In Remote Desktop Manager, clicchi su ***New entry***. Selezioni una voce di sessione RDP.
2. Clicchi su ***Select***.
3. Inserisca un ***Name*** e un ***Host*** che deve essere risolvibile dall'installazione Linux di Devolutions Gateway.
4. Inserisca o colleghi le credenziali necessarie alla sessione RDP.
5. Imposti l'opzione ***Connect*** su ***Always connect***.
6. Nella scheda ***VPN/Tunnel/Gateway***, scelga Devolutions Gateway come tipo di VPN.
7. Vada alla sotto-scheda ***Settings (Devolutions Gateway)***.
8. Scelga il Devolutions Gateway desiderato.
9. Clicchi su ***Add***.
10. Clicchi sul pulsante ***Open session***.

    <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Passando il cursore sulla barra del titolo apparirà un tooltip che mostra che la sessione RDP è connessa tramite Devolutions Gateway.</p></div>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/gateway/it/getting-started/devolutions-gateway-configuration-on-linux.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
