ArLUG (grupul utilizatorilor de Linux din Arad), este o comunitate de oameni, care împărtașesc pasiunea pentru sistemul de operare GNU/Linux și software-ul liber.

Scopurile ArLUG sunt:
* promovarea sistemului de operare Linux și a software-ului liber
* formarea/menținerea/dezvoltarea unei comunități locale
* educarea și instruirea oamenilor (ne)familiarizați cu acest sistem

Tag: ssh

simple utilizari ale lui scp

Probabil că aţi avut nevoie la un moment dat să copiaţi fişiere de pe un calculator pe altulş server pe altul, sau de pe staţia de lucru pe server – indiferet care dintre variante în mod nomral ar trebuii sa parcurgeţti urmatorii unul din paşi:

  1. să deschideţi o conexiune FTP; asta implică instalat server de ftp =>complicat
  2. să mergeţi cu stiku, discheta, cd+rw sau alt media – daca serarul e in alta locatie decat cladirea?

Există o posibiliate mai simplă si e “build in” în prodoculul de ssh si se numeşte scp (secure file copy).

Şi să trecem la treaba cum putem să o folosim. Foarte simplu ţinând cont că există pe ambele maşini la care avem acces.

  • Copiaţi fişierul “foo.txt”, de la o distanţă pe local:

$ scp utilizator@masinaladistanta.ro:foo.txt /ceva/director/local

  • Copiaţi fişierul “foo.txt”, de pe local la distanţă

$ scp foo.txt utilizator@masinaladistanta.ro:/ceva/director/la-distanta

  • Copiaţi directorul “foo” de pe local în directorul de la distanţă numit “bar”

$ scp -r foo utilizator@masinaladistanta.ro:/ceva/director/la-distanta/bar

  • Copiaţi fişierul “foo.txt” de pe maşina de la distanţă “masina1.ro” pentru maşina de la distanţă “masina2.ro”

$ scp utilizator@masina1.ro:/ceva/director/la-distanta/foo.txt \

utilizator@masina2.ro:/ceva/director/la-distanta

  • Copierea fişierelor “foo.txt” şi “bar.txt” de pe local în directorul personal de pe maşina de la distanţă

$ scp foo.txt bar.txt utilizator@masinaladistanta.ro:~

  • Copiază fişiere multiple de maşina de la distanţă în directorul curent de pe local

$ scp utilizator@masinaladistanta.ro:/ceva/director/la-distanta\{a,b,c\} .

$ scp utilizator@masinaladistanta.ro:~/\{foo.txt,bar.txt\} .


Imaginati-va urmatoarea situatie: aveti de compilat o aplicatie Linux/UNIX sau modul de kernel, care necesita prezenta surselor pe disc, sa spunem in /usr/src/kernels/kernel-2.6.21.i386/ sau altundeva. Dar, nu aveti spatiu indeajuns ca sa copiati sursele sau sa instalati pachetele kernel-devel sau linux-source (e vorba de Fedora/RedHat sau Debian/Ubuntu)… Suna familiar? credeti-ma cateodata se intimpla :)

Ca si solutie se poate monta un director de pe un PC aflat la distanta care contine sursle de kernel necesare. Se poate face prin mai multe protocoale: smb, ftp, etc. In acest articol vom monta un director aflat pe alt PC folosind protocolul ssh, care este cel mai popular de acces la distanta si securizat de accesare a sistemelor Linux prin retea.

Mai jos sunt prezentati pasii necesari pentru a realiza acest lucru. Avem nevoie de doua pakete: sshfs si fuse-utils.

a. Ubuntu/Debian:

sudo aptitude install fuse-utils sshfs

b. Fedora/Centos/RedHat:

yum install fuse-sshfs fuse fuse-libs

c. Alt Linux: descarcati si compilati  sshfs/fuse din surse

2. Verificati daca modulul de kernel fuse este incarcat:

lsmod | grep fuse

Ar trebuii sa fie o linie care sa contine fuse in lista (daca nu e: modprobe fuse).

3. Montati sistemul de fisiere de la distanta: (doua comenzi)

mkdir -p /mnt/sshfs/
sshfs remote-user@remote-machine:/some/directory /mnt/sshfs

unde remote-user este utilizatorul autorizat sa se autentifice pe remote-machine prin ssh. Va cere parola, dupa care enter :)

4. Asta e tot

Revin cu nişte completări la un post al meu mai vechi.

Problema expirării sesiunii de ssh se poate rezolva şi mai usor fără a fi nevoit să modifici parametri sistemului referitori la tcp_keepalive_time.

Astfel în: /etc/ssh/ssh_config

adăugam linia:

ServerAliveInterval 5

Asta în ideea că ne conectăm de pe un linux. Linia asta nu face altceva decât să-i spună clientului de ssh să trimită mici cereri de keepalive la fiecare 5 secunde. Normal acest timp, poate fi ridicat (240 de exemplu).

Se mai poate adăuga in sshd_config:

ClientAliveInterval 60

care ţine clientul conectat timp de o ora şi normal că se poate mării şi acest interval.

În /home/<username>/.ssh/config:

serveraliveinterval 60

serveralivecountmax 10

Se mai poate şi din clientul de ssh Putty de pe windows

In connections, bifaţi TCP Keepalives (SO_keepalive OPTION)

putty

Am observat ca daca tin sesiunile ssh neatinse (idle) pentru o perioada de timp (aprox 30min), se blocheaza si ca si rezolvare, trebuie sa inchid terminalul si sa pornesc o noua conexiune.
Exista citeva siretlicuri ca sa scapati de asta:

1) Porniti ceva utilitar/program/script care sa afiseze ceva pe ecran continuu, inainte de a lasa sesiunea neatinsa. Se poate folosi watch -n 1 ‘date’ care arata data si ora la fiecare secunda. O alta metoda ar fi sa lansati cereri icmp dupa ceva host de ex:ping google.com

2) Mariti timpu de idle cu:
echo “7200″ > /proc/sys/net/ipv4/tcp_keepalive_time