niedziela, 26 czerwca 2022

Jak wygenerować klusz SSH (prywatny, publiczny)

Rzecz się tyczy systemu Linux.

Generowanie klucza, prosta komenda:


$ ssh-keygen

Jeśli potwierdzisz domyślne, to klucze zostaną umieszczone:

/home/user_name/.ssh/id_rsa
/home/user_name/.ssh/id_rsa.pub

gdzie id_rsa to klucz prywatny, a id_rsa.pub to klucz publiczny.

Dodawanie klucza do agenta ssh aby nie podawać za każdym razem hasła:


$ eval `ssh-agent` 

wyświetli coś w rodzaju Agent pid 9700, więc potem

$ ssh-add ~/.ssh/id_rsa

Teraz w serwisach, które wykorzystują klucze SSH rejestrujesz swój klucz id_rsa.pub i możesz się tam dostać najczęściej bez hasła.

Jeszcze warto by skopiować nowo dodany klucz do terminali, do ktrych się logujesz przez SSH.

Zakładam, że logujes się do maszyny zewnętrznej na przykład tak:


$ ssh user_name@your.external.server.com

wtedy należy tam skopiować id klucz:

$ ssh-copy-id user_name@your.external.server.com

od teraz nie powinien się już pytać o hasło.

poniedziałek, 6 czerwca 2022

Jak wyświetlić zajęte porty

Naprzykład tak:

netstat -antu

A żeby zobaczyć dodatkowo jaka usługa jest uruchumiona na porcie, uruchom jako root z parametrem -p

sudo netstat -antup

Jak "ubić" usługę, która zajmuje port

W tym przypadku na porcie 9001

sudo kill -9 `sudo lsof -t -i:9001`

czwartek, 23 stycznia 2020

SFTP uruchamiane z linii poleceń bez hasła w Linux

Jeśli uruchamiasz SFTP, to klient odpyta się o hasło. Uniemożliwia to skorzystanie z SFTP np. w cron'ie. Da się jednak uruchomić klienta w tzw "batch mode". Wymaga to generowania i przesyłania sobie kluczy ssh. Pełna instrukcja jak to zrobić znajduje się tutaj: https://www.computerhope.com/unix/sftp.htm#Batch-Mode

środa, 22 stycznia 2020

Zmienne w bash'u w Linuxie

Najprostsze użycie zmiennej:

#!/bin/bash          
STR="Hello World!"
echo $STR
Na konsoli na wypisze string "Hello World!".

Tu ciut więcej:

#!/bin/bash          
FILENAME=/var/my-backup-$(date +%Y-%m-%d).tgz
tar -czf $FILENAME /home/me/
Zmienna $FILENAME to string dynamiczny, w skład którego wchodzi data w formacie rok-miesiąc-dzień, np. 20019-12-31. Program tar zarchiwizuje nam w pliku /var/my-backup-2019-12-21.tgz zawartość katalogu /home/me

I jeszcze króciutko o funkcjach i zmiennych lokalnych (local):

#!/bin/bash
HELLO=Hello 
function hello {
    local HELLO=World
    echo $HELLO
}
echo $HELLO
hello
echo $HELLO
Tu zmienna $HELLO przyjmuje najpierw wartość "hello", a po wykonaniu funkcji hello zmienna $HELLO zmienia wartość na "World".

zip i Linux

Kompresowanie plików.

Składnia:

zip [options] zipfile list_of_files_with_spaces

Skompresuj plik filename.txt do archiwum o nazwie myfile.zip:

$ zip myfile filename.txt

Wyciągnij z archiwum:

$ unzip myfile.zip
Uprzednio zarchiwizowany plik filename.txt zostanie wydobyty z archiwum.

Opcja -u czyli aktualizacja pliku w archiwum

$ zip –u filename.zip file.txt
W tym przypadku zostanie zaktualizowany plik file.txt w archiwum filename.zip

Opcja -m czyli usunięcie pliku źródłowego po udanej kompresji archiwum:

$ zip –m filename.zip file.txt
Tu zostanie usunięty plik file.txt

Opcja -r (recursively) czyli archiwizacja całego katalogu:

$ zip –r filename.zip directory_name
Tu zostanie skompresowany folder o nazwie directory_name

cron w Linuxie

Listowanie istniejących zadań crontaba:
$ crontab -l
Edycja zadań crontaba:
$ crontab -e 
Znaczenie poszczególnych gwiazdek w pliku crontaba: Czyli:
  • pierwsza gwiazdka - minuta wykonywania zadania
  • druga gwiazdka - godzina wykonywania zadania
  • trzecia gwiazdka - dzień wykonywania zadania
  • czwarta gwiazdka - jest odpowiednikiem miesiąca od 1 do 12 lub jan - dec (z angielska)
  • no i piąta gwiazdka - jest dniem tygodnia, gdzie 0 i 7 to niedziela! Albo można zapisać z angielska (he he) od sun do sat
Po gwiazdkach następuje komenda systemu Linux lub skrypt. Aby uniknąć niespodzianek należałoby stosować bezwzględne ścieżki dostępu.

Tworzenie zakresów lub częstotliwości:

  • */5 * * * * - wykonaj polecenie co pięć minut każdego dnia
  • 0 13-15 * * * – wykonaj polecenie o 13:00, 14:00 i 15:00 każdego dnia
  • 15 23 * * mon-fri – oznacza zadanie wykonywane codziennie od poniedziałku do piątku o godzinie 23:15
  • 0 4 * * mon-fri/2 – uruchomi polecenie w każdy poniedziałek, środę i piątek o godzinie 4:00

No i w całości:

00 */12 * * * /home/wacek/scripts/rename_files.sh 2>&1
Czyli: co dwanaście godzin (z moich obserwacji o 12:00 i 24:00) wykonaj skrypt z katalogu użytkownika "wacek" i jego katalogu "scripts" plik wykonywalny o nazwie "rename_files.sh"