Trasferire dati fra due PC? Basta un cavo Ethernet 🔌

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 disponibileScegliamo 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 noDisabilitiamo 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.
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 consudo 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 --reloadOra 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 sshdEvitare 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.
#!/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[Unit]
Description=Blocca la sospensione mentre ci sono sessioni SSH attive
[Service]
ExecStart=/usr/local/bin/inhibit-ssh
Restart=always
[Install]
WantedBy=multi-user.targetNota: 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.serviceCollegarti 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.
Commenti
Per commentare questo post del blog, rispondi pubblicamente a questo post su Mastodon