Consells pràctics, exemples i túnels SSH

Consells pràctics, exemples i túnels SSH
Exemples pràctics SSHaixò portarà les vostres habilitats com a administrador de sistemes remots a un nou nivell. Les ordres i els consells ajudaran no només a utilitzar-los SSH, però també navegar per la xarxa de manera més intel·ligent.

Saber alguns trucs ssh útil per a qualsevol administrador de sistemes, enginyer de xarxa o professional de seguretat.

Exemples pràctics de SSH

  1. Proxy de mitjons SSH
  2. Túnel SSH (reenviament de ports)
  3. Túnel SSH al tercer host
  4. Túnel SSH invers
  5. Proxy invers SSH
  6. Instal·lació d'una VPN mitjançant SSH
  7. Copia la clau SSH (ssh-copy-id)
  8. Execució de comandaments remots (no interactiu)
  9. Captura i visualització de paquets a distància amb Wireshark
  10. Còpia d'una carpeta local a un servidor remot mitjançant SSH
  11. Aplicacions GUI remotes amb reenviament SSH X11
  12. Còpia remota de fitxers amb rsync i SSH
  13. SSH a través de la xarxa Tor
  14. Instància SSH a EC2
  15. Edició de fitxers de text amb VIM mitjançant ssh/scp
  16. Muntatge d'un SSH remot com a carpeta local amb SSHFS
  17. Multiplexació de SSH amb ControlPath
  18. Transmet vídeo a través de SSH amb VLC i SFTP
  19. Autenticació de dos factors
  20. L'amfitrió salta amb SSH i -J
  21. Bloqueig dels intents de força bruta SSH amb iptables
  22. SSH Escape per canviar el reenviament de ports

Primer els bàsics

Anàlisi de la línia d'ordres SSH

L'exemple següent utilitza opcions habituals que es troben sovint en connectar-se a un servidor remot SSH.

localhost:~$ ssh -v -p 22 -C neo@remoteserver

  • -v: La sortida de depuració és especialment útil a l'hora d'analitzar problemes d'autenticació. Es pot utilitzar diverses vegades per mostrar informació addicional.
  • - p 22: port de connexió a un servidor SSH remot. 22 no s'ha d'especificar, perquè aquest és el valor predeterminat, però si el protocol es troba en algun altre port, l'especifiquem mitjançant el paràmetre -p. El port d'escolta s'especifica al fitxer sshd_config en format Port 2222.
  • -C: compressió per a la connexió. Si teniu un canal lent o visualitzeu molt text, això pot accelerar la connexió.
  • neo@: La línia abans del signe @ indica el nom d'usuari per autenticar-se al servidor remot. Si no ho especifiqueu, per defecte tindrà el nom d'usuari del compte amb el qual esteu connectat actualment (~$ whoami). L'usuari també es pot especificar amb el paràmetre -l.
  • remoteserver: nom de l'amfitrió al qual es connectar ssh, pot ser un nom de domini totalment qualificat, una adreça IP o qualsevol amfitrió del fitxer hosts local. Per connectar-vos a un host que admeti tant IPv4 com IPv6, podeu afegir el paràmetre de línia d'ordres -4 o -6 per a una correcta resolució.

Tots els paràmetres anteriors són opcionals, excepte remoteserver.

Utilitzant un fitxer de configuració

Encara que molts estan familiaritzats amb el fitxer sshd_config, també hi ha un fitxer de configuració del client per a l'ordre ssh. Valor per defecte ~/.ssh/config, però es pot definir com a paràmetre d'una opció -F.

Host *
     Port 2222

Host remoteserver
     HostName remoteserver.thematrix.io
     User neo
     Port 2112
     IdentityFile /home/test/.ssh/remoteserver.private_key

L'exemple de fitxer de configuració ssh anterior té dues entrades d'amfitrió. El primer indica tots els hosts, per a tots s'aplica el paràmetre de configuració del Port 2222. El segon diu que per a l'amfitrió servidor remot hauríeu d'utilitzar un nom d'usuari, port, FQDN i IdentityFile diferents.

Un fitxer de configuració pot estalviar molt de temps d'escriptura de caràcters permetent que la configuració avançada s'apliqui automàticament quan es connecta a hosts específics.

Còpia de fitxers mitjançant SSH mitjançant SCP

El client SSH inclou altres dues eines molt útils per copiar fitxers connexió ssh xifrada. A continuació es mostra un exemple d'un ús típic de les ordres scp i sftp. Tingueu en compte que moltes de les opcions per a ssh també s'apliquen a aquestes ordres.

localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png

En aquest exemple el fitxer mypic.png copiat a servidor remot a la carpeta /media/data i rebatejada per mypic_2.png.

No us oblideu de la diferència en el paràmetre del port. En això trobareu molts que llancen scp des de la línia d'ordres. Aquí teniu el paràmetre del port -PI no -pcom en el client ssh! Oblidaràs, però no et preocupis, tothom oblida.

Per a aquells que coneguin la consola ftp, moltes de les ordres són similars en sftp. Pots fer-ho empenta, posar и lscom el teu cor desitja.

sftp neo@remoteserver

Exemples pràctics

En molts d'aquests exemples, el resultat es pot aconseguir mitjançant diferents mètodes. Com en tots els nostres llibres de text i exemples, es dóna preferència als exemples pràctics que només fan el truc.

1. Proxy de mitjons SSH

La funció SSH Proxy és la número 1 per una bona raó. És més potent del que pensa la majoria de la gent i us dóna accés a qualsevol sistema al qual tingui accés un servidor remot, utilitzant gairebé qualsevol aplicació. Un client ssh pot túnel de trànsit a través d'un servidor intermediari SOCKS amb una ordre senzilla. És important entendre que el trànsit a sistemes remots vindrà d'un servidor remot, tal com s'indicarà als registres del servidor web.

localhost:~$ ssh -D 8888 user@remoteserver

localhost:~$ netstat -pan | grep 8888
tcp        0      0 127.0.0.1:8888       0.0.0.0:*               LISTEN      23880/ssh

Aquí iniciem un proxy de mitjons al port TCP 8888, la segona ordre comprova que el port estigui actiu en mode d'escolta. 127.0.0.1 especifica que el servei només s'executa en localhost. Podem utilitzar una ordre lleugerament diferent per escoltar a totes les interfícies, incloent ethernet o wifi, això permetrà que altres aplicacions (navegadors, etc.) de la nostra xarxa es connectin al servei proxy mitjançant el proxy ssh socks.

localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver

Ara podem configurar el navegador per connectar-se al proxy de mitjons. A Firefox seleccioneu Configuració | Principal | Configuració de la xarxa. Especifiqueu l'adreça IP i el port al qual connecteu-vos.

Consells pràctics, exemples i túnels SSH

Fixeu-vos en l'opció de la part inferior del formulari perquè les consultes DNS del navegador també passin pel proxy SOCKS. Si utilitzeu un servidor intermediari per xifrar el trànsit web a la vostra xarxa local, probablement voldreu seleccionar aquesta opció perquè les consultes DNS es tunelin a través de la connexió SSH.

S'està activant el proxy de mitjons a Chrome

Si inicieu Chrome amb determinades opcions de línia d'ordres, s'habilitarà el proxy de mitjons, així com les consultes DNS des del navegador. Confieu però comproveu. Ús tcpdump per comprovar que les sol·licituds de DNS ja no són visibles.

localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"

Ús d'altres aplicacions amb un proxy

Tingueu en compte que moltes altres aplicacions també poden utilitzar proxies de mitjons. El navegador web és simplement el més popular de tots. Algunes aplicacions tenen opcions de configuració per activar un servidor intermediari. Altres necessiten una mica d'ajuda amb un programa d'ajuda. Per exemple, proxychains us permet executar mitjançant socks-proxy Microsoft RDP, etc.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Els paràmetres de configuració del proxy de mitjons s'estableixen al fitxer de configuració de proxychains.

Pista: si utilitzeu un escriptori remot de Linux a Windows? Prova Client FreeRDP. Aquesta és una implementació més moderna que rdesktop, amb una interacció molt més fluida.

Opció per utilitzar SSH a través del proxy de mitjons

Esteu assegut en una cafeteria o hotel i us oblideu a utilitzar una connexió WiFi força poc fiable. Des de l'ordinador portàtil, iniciem un servidor intermediari ssh localment i configurem un túnel ssh a la xarxa domèstica al Rasberry Pi local. Mitjançant un navegador o altres aplicacions configurades per a un proxy de mitjons, podem accedir a qualsevol servei de xarxa de la nostra xarxa domèstica o connectar-nos a través de la nostra connexió domèstica. Tot el que hi ha entre el vostre ordinador portàtil i el vostre servidor domèstic (a través de Wi-Fi i Internet fins a casa vostra) està xifrat en un túnel SSH.

2. Túnel SSH (reenviament de ports)

En la seva forma més senzilla, un túnel SSH simplement obre un port al vostre sistema local que es connecta a un port diferent a l'altre extrem del túnel.

localhost:~$ ssh  -L 9999:127.0.0.1:80 user@remoteserver

Analitzem el paràmetre -L. Es pot considerar com el costat d'escolta local. Així, a l'exemple anterior, el port 9999 escolta al costat de l'host local i s'envia al port 80 al servidor remot. Tingueu en compte que 127.0.0.1 fa referència a localhost al servidor remot!

Pugem les escales. L'exemple següent uneix els ports d'escolta a altres amfitrions de la xarxa local.

localhost:~$ ssh  -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver

En aquests exemples, ens connectem a un port del servidor web, però aquest podria ser un servidor intermediari o qualsevol altre servei TCP.

3. Túnel SSH a un host de tercers

Podem utilitzar les mateixes opcions per túnel d'un servidor remot a un altre servei que s'executa en un tercer sistema.

localhost:~$ ssh  -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver

En aquest exemple, estem reenviant un túnel des del servidor remot a un servidor web que s'executa el 10.10.10.10. Trànsit des del servidor remot fins a 10.10.10.10 ja no és al túnel SSH. El servidor web de l'10.10.10.10 considerarà que el servidor remot és l'origen de les sol·licituds web.

4. Túnel SSH invers

Aquí configurarem un port d'escolta al servidor remot que es connectarà de nou a un port local del nostre host local (o un altre sistema).

localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver

Aquesta sessió SSH estableix una connexió des del port 1999 del servidor remot fins al port 902 del nostre client local.

5. Proxy invers SSH

En aquest cas, estem configurant un proxy de mitjons a la nostra connexió ssh, però el proxy està escoltant a l'extrem remot del servidor. Les connexions a aquest servidor intermediari remot ara surten del túnel com a trànsit del nostre host local.

localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver

Resolució de problemes de túnels SSH remots

Si teniu problemes perquè funcionin les opcions remotes SSH, consulteu-ho netstat, a quines altres interfícies està connectat el port d'escolta. Encara que hem indicat 0.0.0.0 als exemples, però si el valor GatewayPorts в sshd_config ajustat a no, llavors l'oient només estarà vinculat a localhost (127.0.0.1).

Avís de seguretat

Tingueu en compte que en obrir túnels i servidors intermediaris, és possible que els recursos de xarxa interns estiguin disponibles per a xarxes poc fiables (per exemple, Internet!). Això pot suposar un greu risc de seguretat, així que assegureu-vos d'entendre què és un oient i a què té accés.

6. Instal·leu VPN a través de SSH

Un terme comú entre els atacants (pentesters, etc.) és "punt de suport de la xarxa". Un cop s'estableix una connexió en un sistema, aquest es converteix en la porta d'entrada per a un accés posterior a la xarxa. Un punt de suport que et permet moure't en amplitud.

Per a tal punt de suport, podem utilitzar un servidor intermediari SSH i proxychains, però hi ha algunes limitacions. Per exemple, no serà possible treballar directament amb endolls, de manera que no podrem escanejar ports dins de la xarxa a través de nmap SYN.

Amb aquesta opció VPN més avançada, la connexió baixa a nivell 3. Aleshores, podem simplement encaminar el trànsit a través del túnel mitjançant l'encaminament de xarxa estàndard.

El mètode utilitza ssh, iptables, tun interfaces i encaminament.

Primer heu d'establir aquests paràmetres sshd_config. Com que estem fent canvis a les interfícies dels sistemes remots i clients, nosaltres necessiteu permisos d'arrel a ambdós costats.

PermitRootLogin yes
PermitTunnel yes

Aleshores establirem una connexió ssh mitjançant el paràmetre que demana la inicialització dels dispositius tun.

localhost:~# ssh -v -w any root@remoteserver

Ara hauríem de tenir un dispositiu tun quan mostrem les interfícies (# ip a). El següent pas afegirà adreces IP a les interfícies del túnel.

costat del client SSH:

localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up

costat del servidor SSH:

remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up

Ara tenim una ruta directa a un altre amfitrió (route -n и ping 10.10.10.10).

És possible encaminar qualsevol subxarxa a través de l'amfitrió de l'altre costat.

localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0

Al costat remot, activa ip_forward и iptables.

remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE

Bum! VPN a través del túnel SSH a la capa de xarxa 3. Això ja és una victòria.

Si hi ha cap problema, utilitzeu tcpdump и pingper determinar la causa. Com que estem jugant a la capa 3, els nostres paquets icmp passaran per aquest túnel.

7. Copia la clau SSH (ssh-copy-id)

Hi ha diverses maneres de fer-ho, però aquesta ordre estalvia temps en no copiar els fitxers manualment. Simplement copia ~/.ssh/id_rsa.pub (o la clau predeterminada) del vostre sistema a ~/.ssh/authorized_keys en un servidor remot.

localhost:~$ ssh-copy-id user@remoteserver

8. Execució de comandaments remots (no interactiu)

equip ssh es pot enllaçar amb altres ordres per a la interfície fàcil d'utilitzar habitual. Només cal que afegiu l'ordre que voleu executar a l'amfitrió remot com a darrer paràmetre entre cometes.

localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php

En aquest exemple grep s'executa al sistema local després que el registre s'hagi descarregat a través del canal ssh. Si el fitxer és gran, és més convenient executar-lo grep al costat remot simplement tancant les dues ordres entre cometes dobles.

Un altre exemple fa la mateixa funció que ssh-copy-id de l'exemple 7.

localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

9. Captura de paquets remota i vista Wireshark

Vaig agafar un dels nostres exemples de tcpdump. Utilitzeu-lo per capturar paquets de forma remota i tornar el resultat directament a la GUI del vostre Wireshark local.

:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -

10. Copia d'una carpeta local a un servidor remot mitjançant SSH

Un bon truc que comprimeix una carpeta amb bzip2 (aquesta és l'opció -j de l'ordre tar) i després agafa el flux bzip2 de l'altra, creant una carpeta duplicada al servidor remot.

localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"

11. Aplicacions GUI remotes amb reenviament SSH X11

Si tant el client com el servidor remot tenen "x" instal·lada, podeu executar de forma remota una comanda GUI, amb una finestra al vostre escriptori local. Aquesta característica fa molt de temps que existeix, però encara és molt útil. Inicieu un navegador web remot o fins i tot una consola VMWawre Workstation com faig en aquest exemple.

localhost:~$ ssh -X remoteserver vmware

Es requereix cadena X11Forwarding yes a l'arxiu sshd_config.

12. Còpia remota de fitxers mitjançant rsync i SSH

rsync molt més convenient scpsi necessiteu una còpia de seguretat periòdica d'un directori, un gran nombre de fitxers o fitxers molt grans. Hi ha una funció per recuperar-se d'un error de transferència i copiar només els fitxers modificats, la qual cosa estalvia trànsit i temps.

Aquest exemple utilitza compressió gzip (-z) i mode d'arxiu (-a), que permet la còpia recursiva.

:~$ rsync -az /home/testuser/data remoteserver:backup/

13. SSH a través de la xarxa Tor

La xarxa Tor anònima pot tunelitzar el trànsit SSH amb l'ordre torsocks. La següent comanda enviarà un servidor intermediari ssh a través de Tor.

localhost:~$ torsocks ssh myuntracableuser@remoteserver

Torssets utilitzarà el port 9050 a localhost per al proxy. Com sempre quan feu servir Tor, heu de comprovar seriosament quin trànsit s'està túnel i altres problemes de seguretat operativa (opsec). On van les vostres sol·licituds de DNS?

14. Instància SSH a EC2

Es necessita una clau privada per connectar-se a una instància EC2. Baixeu-lo (extensió .pem) des del tauler de control d'Amazon EC2 i canvieu els permisos (chmod 400 my-ec2-ssh-key.pem). Guardeu la clau en un lloc segur o poseu-la a la vostra carpeta ~/.ssh/.

localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public

Paràmetre -i simplement diu al client ssh que utilitzi aquesta clau. Dossier ~/.ssh/config ideal per configurar automàticament l'ús de la clau quan es connecta a un host ec2.

Host my-ec2-public
   Hostname ec2???.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/my-ec2-key.pem

15. Editeu fitxers de text amb VIM mitjançant ssh/scp

Per a tots els amants vim aquest consell us estalviarà temps. Mitjançant l'ús de vim Els fitxers s'editen mitjançant scp amb una ordre. Aquest mètode simplement crea el fitxer localment a /tmp, i després el copia de nou un cop l'hem desat vim.

localhost:~$ vim scp://user@remoteserver//etc/hosts

Nota: el format és lleugerament diferent de l'habitual scp. Després de l'amfitrió tenim un doble //. Aquesta és una referència absoluta del camí. Una única barra vol dir que el camí és relatiu a la carpeta d'inici users.

**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])

Si veieu aquest error, comproveu el format de l'ordre. Això normalment significa un error de sintaxi.

16. Munteu SSH remot com a carpeta local amb SSHFS

Mitjançant sshfs - client del sistema de fitxers ssh - Podem muntar un directori local en una ubicació remota amb totes les interaccions de fitxers en una sessió xifrada ssh.

localhost:~$ apt install sshfs

Instal·leu el paquet a Ubuntu i Debian sshfs, i després només cal muntar la ubicació remota al nostre sistema.

localhost:~$ sshfs user@remoteserver:/media/data ~/data/

17. Multiplexació de SSH amb ControlPath

Per defecte, si hi ha una connexió existent amb un servidor remot utilitzant ssh segona connexió amb ssh o scp estableix una nova sessió amb autenticació addicional. Opció ControlPath us permet utilitzar una sessió existent per a totes les connexions posteriors. Això accelerarà significativament el procés: l'efecte es nota fins i tot a la xarxa local, i encara més quan es connecta a recursos remots.

Host remoteserver
        HostName remoteserver.example.org
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m

ControlPath especifica el sòcol per a noves connexions per comprovar si hi ha una sessió activa ssh. L'última opció significa que fins i tot després de tancar la sessió de la consola, la sessió existent romandrà oberta durant 10 minuts, de manera que durant aquest temps us podeu tornar a connectar al sòcol existent. Consulteu l'ajuda per obtenir més informació. ssh_config man.

18. Transmet vídeo a través de SSH amb VLC i SFTP

Fins i tot usuaris de llarga durada ssh и vlc (Vídeo Lan Client) no sempre coneix aquesta opció convenient quan realment necessiteu veure vídeo a través de la xarxa. A la configuració fitxer | Obriu el flux de xarxa programes vlc podeu introduir la ubicació com sftp://. Si cal una contrasenya, se us demanarà.

sftp://remoteserver//media/uploads/myvideo.mkv

19. Autenticació de dos factors

Al servei SSH s'aplica la mateixa autenticació de dos factors que el vostre compte bancari o compte de Google.

Per descomptat, ssh inicialment té una funció d'autenticació de dos factors, que significa una contrasenya i una clau SSH. L'avantatge d'un testimoni de maquinari o d'una aplicació Google Authenticator és que sol ser un dispositiu físic diferent.

Consulteu la nostra guia de 8 minuts utilitzant Google Authenticator i SSH.

20. Jumping hosts amb ssh i -J

Si la segmentació de la xarxa requereix que salteu per diversos amfitrions ssh per arribar a la vostra xarxa de destinació final, la drecera -J us estalviarà temps.

localhost:~$ ssh -J host1,host2,host3 [email protected]

El més important aquí és entendre que això no és semblant a l'ordre ssh host1, llavors user@host1:~$ ssh host2 L'opció -J utilitza intel·ligentment el reenviament perquè el localhost estableixi una sessió amb el següent host de la cadena. Així, a l'exemple anterior, el nostre localhost s'autentica a host4. És a dir, s'utilitzen les nostres claus localhost i la sessió de localhost a host4 està totalment xifrada.

Per tal oportunitat ssh_config especifica l'opció de configuració ProxyJump. Si regularment heu de passar per diversos amfitrions, l'automatització mitjançant la configuració estalviarà molt de temps.

21. Bloquejar els intents de força bruta SSH amb iptables

Qualsevol persona que hagi gestionat un servei SSH i hagi mirat els registres és conscient del nombre d'intents de força bruta que es produeixen cada hora de cada dia. Una manera ràpida de reduir el soroll del registre és moure SSH a un port no estàndard. Feu canvis al fitxer sshd_config utilitzant una opció de configuració Port ##.

Amb iptables també podeu bloquejar fàcilment els intents de connexió a un port quan s'arriba a un determinat llindar. Una manera fàcil de fer-ho és utilitzar OSSEC, ja que no només bloqueja SSH, sinó que realitza un munt d'altres mesures de detecció d'intrusions basada en nom d'amfitrió (HIDS).

22. SSH Escape to Change Port Forwarding

I el nostre darrer exemple ssh dissenyat per canviar el reenviament de ports sobre la marxa dins d'una sessió existent ssh. Imagineu un escenari així. Estàs endinsat a la xarxa; potser va saltar a través de mitja dotzena d'amfitrions i necessiteu un port local a l'estació de treball que es reenviï a la SMB de Microsoft d'un sistema Windows 2003 antic (algú recorda ms08-67?).

Fent clic enter, prova d'escriure a la consola ~C. Aquesta és una seqüència d'escapada de sessió que us permet fer canvis a una connexió existent.

localhost:~$ ~C
ssh> -h
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward
ssh> -L 1445:remote-win2k3:445
Forwarding port.

Aquí podeu veure que hem reenviat el nostre port local 1445 a un host de Windows 2003 que hem trobat a la xarxa interna. Ara només córrer msfconsole, i ja esteu a punt (suposant que teniu previst utilitzar aquest amfitrió).

Terminació

Aquests exemples, consells i ordres ssh hauria de donar un punt de partida; Hi ha informació addicional sobre cadascuna de les ordres i funcions disponible a les pàgines de manual (man ssh, man ssh_config, man sshd_config).

Sempre m'ha fascinat la capacitat d'accedir als sistemes i executar ordres a qualsevol part del món. Desenvolupar les teves habilitats amb eines com ssh seràs més eficient en qualsevol joc que juguis.

Font: www.habr.com

Afegeix comentari