Trasferire dati fra due PC? Basta un cavo Ethernet 🔌

Dipinto astratto geometrico con una fitta griglia di linee orizzontali e verticali che si intersecano. Le linee sono formate da piccoli segmenti rettangolari nei colori primari insieme a grigio, nero e bianco. La griglia crea un motivo intricato simile a un mosaico, con ampi spazi rettangolari bianchi e blocchi di colore pieno. Il tutto suggerisce una mappa urbana schematica.
Piet Mondrian, Broadway Boogie Woogie

Trasferire dati fra due PC è sempre stato, per me, una sofferenza. Se i file sono piccoli usare servizi di messaggistica come Telegram ci può stare™ però ultimamente ho avuto un occasione per far girare i neuroni: il cambio di PC. Io odio cambiare dispositivi, è sempre una sofferenza unica. Per fortuna ho trovato un modo migliore del passare tutto su una memoria esterna per poi copiarla sul nuovo PC.

Premessa:

  • Assumo che stiate usando Fedora Linux
  • È un pò tecnico il setup ma nulla di impossibile. Una volta impostato è facilissimo
  • Si può adattare a qualsiasi sistema operativo, internet è il vostro migliore amico

Nella rete locale

Se siete fortunat* da avere un WiFi a casa: Congratulazioni 🎉️ , non dovere fare quasi nulla. Serve solo che entrambi i due PC siano nella stessa rete. Per scambio di grandi file consiglio di attaccarvi con il cavo Ethernet.

Cavo diretto fra i 2 PC

Io faccio parte di quei poracci che non hanno un abbonamento ad Internet per la casa. E quindi come si fa? Serve creare un profilo “diretto”, un canale di comunicazione fra i 2 PC. E cosa ci sta di più veloce che gli stessi cavi di internet?

Per prima cosa capiamo su quale interfacce di rete vogliamo creare il profilo con nmcli device status

DEVICE       TYPE      STATE                   CONNECTION             
lo           loopback  connected (externally)  lo                     
enp63s0      ethernet  non disponibile         --                     
wlp62s0      wifi      non disponibile

Scegliamo l’interfaccia Ethernet, nel mio caso enp63s0.

Ora possiamo creare la connessione diretta

nmcli con add type ethernet ifname enp63s0 con-name diretto ipv4.method link-local connection.autoconnect no

Disabilitiamo l’autoconnect per evitare che prevalga rispetto a connessioni più importanti come quella al router. Quindi ricordatevi di attivare ogni volta la connessione quando serve.

Menu delle impostazioni di rete con la connessione via cavo 'diretto' attiva su Ethernet PCI.
Esempio di attivazione della connessione 'diretto' da GNOME

Questa procedura va ripetuta su entrambi i due PC. diretto

Come collegarsi

Per prima cosa bisogna capire:

  • hostname, che possiamo trovare con hostname; e se non ci piace si cambia con sudo hostnamectl set-hostname nuovo-nome
  • username, con whoami

Esiste una cosa magica, l’mDNS, che ci permette di scoprire quali PC ci sono nella rete tramite il loro nome. Possiamo trovarli con hostname-del-pc.local

Signora mia, non ci si può più fidare di nessuno oggi

Per evitare di fare danni bisogna restringere i permessi. Non vogliamo bot russi nel nostro PC. Quindi per sicurezza il servizio ssh, quello che useremo per comunicare fra i PC, deve essere ammesso solo nella nostra zona home

sudo firewall-cmd --permanent --zone=FedoraWorkstation --remove-service=ssh
sudo firewall-cmd --permanent --zone=home --remove-service=ssh

# LAN di casa 
sudo firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'

# Cavo diretto
sudo firewall-cmd --permanent --zone=home --add-rich-rule='rule family="ipv4" source address="169.254.0.0/16" service name="ssh" accept'

sudo firewall-cmd --reload

Ora possiamo aggiungere la nostra connessione nella zona home, quella fidata insomma, ed attivare il tutto

nmcli con mod diretto connection.zone home  # caso cavo diretto
nmcli con mod "nome" connection.zone home   # caso rete di casa
nmcli con up NOME
sudo systemctl enable --now sshd

Evitare che ti si spenga il PC mentre sposti i file e ti prenda un colpo

Ovviamente a me non è successo.

Per farlo creiamo un servizio che controlla ogni 10 secondi se una sessione ssh è attiva e nel caso disabilita la sospensione.

inhibit-ssh
#!/bin/sh
active() { ss -Htn state established '( sport = :22 )' | grep -q .; }
while :; do
  if active; then
    systemd-inhibit --what=sleep:idle:handle-lid-switch --who=inhibit-ssh \
      --why="Sessione SSH/SFTP attiva" --mode=block \
      sh -c 'while ss -Htn state established "( sport = :22 )" | grep -q .; do sleep 10; done'
  fi
  sleep 10
done
inhibit-ssh.service
[Unit]
Description=Blocca la sospensione mentre ci sono sessioni SSH attive

[Service]
ExecStart=/usr/local/bin/inhibit-ssh
Restart=always

[Install]
WantedBy=multi-user.target

Nota: l’inhibit include handle-lid-switch, altrimenti la chiusura schermo sospende comunque

E per installare questi servizi usiamo

sudo install -m 755 inhibit-ssh /usr/local/bin/inhibit-ssh
sudo install -m 644 inhibit-ssh.service /etc/systemd/system/inhibit-ssh.service
sudo systemctl daemon-reload
sudo systemctl enable --now inhibit-ssh.service

Collegarti al PC da un file manager

La stragrande maggioranza dei file manager ti permette di collegarti a server SFTP; in pratica puoi collegarti al tuo PC come se fosse un disco esterno, navigarci, spostarci le cose e pure lavorarci.

Ad esempio su quello di GNOME basta premere Ctrl+L, incollare sulla barra degli indirizzi sftp://utente@hostname.local/ e voilà. Per comodità potere salvare il vostro PC nei segnalibri con tasto destro -> segnalibro, o Ctrl+D.

Gestore file con il file 'Ciau 👋.txt' selezionato nella cartella 'sono sul vecchio pc'.
GNOME Files con connessione remota al PC secondario

Commenti

Per commentare questo post del blog, rispondi pubblicamente a questo post su Mastodon

Ancora nessun commento