Linux: Generowanie klucza SSH do logowania bez hasła

2022-01-13

XXI wiek, a ciągle używamy haseł? Bez haseł jest prościej i hahahah… bezpieczniej! Wiem, wiem, koniec końców to hasło gdzieś się tam pojawi, ale…

Jeśli między systemami opartymi o Linux/Unix chcesz logować się bez podawania hasła w oparciu o uwierzytelnie kluczem prywatnym i publicznym to:

Zacznij od wygenerowania tych kluczy. Służy do tego polecenie ssh-keygen. Polecenie zaproponuje zapisanie klucza prywantego w katalogu domowym w .ssh/id_rsa, a publicznego w .ssh/id_rsa.pub.

Taka lokalizacja nie jest zła, jeśli ten prywatny klucz chcesz zachować lokalnie na swoim komputerze, a publiczny przegrać na zdalną maszynę, która powinna akceptować Twoje logowanie bez prośby o hasło:

ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/boss/.ssh/id_rsa): 
/home/boss/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/boss/.ssh/id_rsa
Your public key has been saved in /home/boss/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:tmvrlp4/kvgPulfa7Bl4qiD0bd2mNQwACtBLgi756gc boss@u20
The key's randomart image is:
+---[RSA 3072]----+
|=.  .            |
|o.o. .           |
|.+..  .          |
|o..    .         |
|...     S        |
| E.. . o *.      |
| .o o o.=BO      |
|.  o o..OX++     |
|...   +XX*=.     |
+----[SHA256]-----+

Tworząc te klucze można (i w sumie jest to zalecane), zabezpieczyć je hasłem. W takim  przypadku przed skorzystaniem z klucza prywatnego będziemy musieli najpierw go otworzyć podając to hasło.

Polecenie ssh-keygen pozwala na określenie dodatkowych parametrów kluczy jak, ich algorytm, czy długość.

Gdy klucz już jest wygenerowany, to należy go rozdystrybuować na systemy, które powinny go akceptować  i pozwalać logować się bez hasła. Zrobisz to poleceniem

ssh-copy-id username@host.address.com

Jeśli klucz publiczny miałby być wykorzystywany tylko na lokalnym serwerze, to należy go umieścić w pliku authorized_keys.

Jeśli masz więcej wygenerowanych kluczy, to możesz je przesyłać wybiórczo do zdalnego stystemu korzystając z opcji -i o tak:

ssh-copy-id -i ./servername username@host.address.com

gdzie servername to nazwa pliku z kluczem wygenerowanym wcześniej za pomocą ssh-keygen.

Od tej pory można się już łączyć do zdalnej maszyny przez

ssh username@host.address.com

Na docelowej maszynie plik powinien zostać umieszczony w katalogu domowym użytkownika w podkatalogu .ssh. Uwaga – ten podkatalog musi mieć w odpowiedni sposób zdefiniowane bezpieczeństwo: właścicielem musi być użytkownik, a uprawnienia powinny być odebrane dla grupy i innych (700)

Jeśli z jednego serwera chcesz łączyć się do większej liczby innych serwerów, możesz w katalogu ~/.ssh utworzyć plik config o zawartości podobnej jak ta:

# Control node
Host dbserv10
HostName dbserv11
PreferredAuthentications publickey
IdentityFile ~/.ssh/dbserv10

# Client node
Host dbserv11
HostName dbserv11
PreferredAuthentications publickey
IdentityFile ~/.ssh/dbserv11

Wykonując połączenie na konto user@hostname, zostanie pobrany od razu właściwy klucz.

 

 

By Rafał Kraik in Linuxy

Powershell: Odczyt dużego pliku z wykorzystaniem metod .Net

2022-01-11

Jeśli do przetworzenia jest dużo danych tekstowych i trzeba je np przefiltrować (coś w stylu polecenia grep). W takim przypadku przetwarzanie pliku przez Import-CSV albo Get-Content może być nieoptymalne, wolelibyśmy przetwarzać plik linia po linijce i … z pomocą mogą przyjść metody .NET

Poniższy przykład pochodzi z Reading And Writing To Files · Powerstart to Powershell reference book (dewin.me)

$path = "c:\d\myfile.txt"
$stream = [System.IO.StreamReader]::new($path)
while( -not $stream.EndOfStream) {
    $value =  [int]($stream.ReadLine())
    if (($value%10000) -eq 0) {
        write-host $value
    }
}
$stream.close()

Korzystając z klasy System.IO.StreamReader otwieramy plik, następnie przetwarzamy go aż do osiągnięcia końca pliku (while not end of stream) i przy każdym wykonaniu pobieramy jedną linijkę tekstu przez ReadLine(). Jeśli trzeba by było pobierać więcej danych w każdym kroku – można to zmienić.

Plik jest fizycznie odczytywany linia po linii z dysku, więc użycie pamięci przez program będzie zoptymalizowane.

 

By Rafał Kraik in Power Shell

Azure: Sprawdzenie stanu subskrypcji sponsorowanej (Azure Pass)

2022-01-09

Jeśli znalazł się ktoś miły i zasponsorował Ci dostęp do subskrypcji Azure, wysyłając Ci tzw. Azure Pass, to możesz chcieć zweryfikować ile kasy zostało jeszcze w tej subskrypcji. Zrobisz to łatwo wchodząc na stronę:

https://www.microsoftazuresponsorships.com/Usage

Stronka pozwoli wybrać subskrypcję (jeśli jesteś naciągaczem i masz ich kilka),

a potem na ładnym grafie pokaże jak bardzo jesteś rozrzutny/a

 

 

By Rafał Kraik in Azure

Outlook zawiesza się z ekranem „przetwarzanie” / „processing”

2022-01-01

Objawy:

Bez specjalnego powodu Outlook przestal się uruchamiać. Po kliknięciu ikony pojawia sie ekran „przetwarzanie” i okienko wisi w nieskończoność

Obejście/rozwiązanie:

Podobno w pewnych wersjach tak się może zdarzyć…  dlatego docelowym rozwiązaniem powinna być aktualizacja. Jeśli jednak chcesz, żeby po prostu Outlook wystartował, to spróbuj takiej sztuczki:

  1. Zamknij wszyskie procesy Outlooka (CTRL+Shift+Escape i w zakładce szczegóły pozamykaj wszystkie procesy outlook)
  2. Na pulpicie utwórz skrót do programu Outlook. We właściwościach skrótu ustaw, aby program startował w zmaksymalizowanym oknie.
  3. Gotowe – uruchom Outlooka – powinien się tym razem uruchomić 😉

A oto propozycje od Microsoft:

https://docs.microsoft.com/en-US/outlook/troubleshoot/performance/outlook-2016-hangs-at-processing

By Rafał Kraik in Helpdesk

Linux jest prosty? Ubuntu i ustawienie Python 3 jako domyślny

2021-12-26

Zwykle, kiedy chcemy uruchomić interpreter Pythona, to uruchamiamy komendę

python

Na Ubuntu domyślnie i owszem jest zainstalowany Python, ale nie pod domyślną nazwą „python”. Żeby uruchomić pythona należałoby napisać

python3

Taka konwencja bieże się z tego, że python był domyślnie instalowany na systemach linux jeszcze dawno temu, kiedy jedyną dostępną wersją był python2. Potem pojawił się python 3, ale nazwa „python” była już zajęta. Nowa wersja była więc dostępną pod nazwą python3. No i w sumie dobrze. Można było pracować z pythonem 2 wpisując python lub python2 oraz z pythonem 3 wpisujac python3.

Jeśli choć trochę znasz zasady pracy z Linuxem, to możesz powiedzieć, że żeby python3 byl dostępny pod nazwą python, to wystarczyłoby stworzyć dowiązanie symboliczne o nazwie python wskazujące na plik python3.

Możnaby było, ale… .w Ubuntu mamy do dyspozycji program update-alternatives, który pozwala dokładnie określać jaki program ma się uruchamiać jako odpowiednik pewnej wpisywanej komendy.  Można więc spowodować aby po wpisaniu python uruchamiał się python3. Wystarczy do tego jedna komenda:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1

A jeśli temat alternatywnych konfiguracji jest dla Ciebie ciekawy, to zajrzyj tu:

How to Use update-alternatives Command on Ubuntu

By Rafał Kraik in Linuxy

Linux jest prosty? Włączenie hibernacji na Ubuntu

2021-12-26

No właśnie, czy Linux jest prosty? Podejrzewam, że operacja wyrostka robaczkowego jest prosta, ale tylko dla doświadczonego chirurga. Jeśli bierzesz się za cos po raz pierwszy, to będzie trudno. Spróbuję tu opisać kilka rzeczy, które powinne być proste, a tymczasem… oceń sam/a

Poniższy opis nie jest manualem na temat tego jak w Ubuntu Desktop włączyć tryb hibernacji po zamknięciu klapki laptopa, to po prostu zbiór czynności, które wykonałem u siebie, żeby to wszystko razem w końcu zadziałało, bo na początku nie chciało.

Hibernacja w Linuxie wykorzystuje swap-a. Zgodnie z najnowszymi zaleceniami, jeśli komputer dysponuje dużą ilością pamięci, to swap może być mały. BŁĄÐ. Jeśli chcesz skorzystać z hibernacji, to swap musi pomieścić całą pamięć RAM, więc musi być duży. Na moim systemie mam 8 GB RAM, domyślny swap miał rozmiar 2GB, więc zmieniłem konfigurację na wykorzystanie 10 GB na swap.

Mam również wrażenie, że ów swap nie może być plikiem swap znajdującym się gdzieś w systemie plików, tylko że powinna to być osobna partycja.

Wyłączenie swap-a w pliku:

sudo swapon --all

pokazuje, jaki swap aktualnie jest dostępny (u mnie 2 GB). Jeśli chcesz sprawdzić jaka część swapa jest wykorzystywana obecnie na systemie, to użyj

grep -i swap /proc/meminfo

i życzę wyniku wskazującego, że swap nie jest używany Czytaj dalej »

By Rafał Kraik in Linuxy

Windows: Kiedy wygaśnie moje hasło?

2021-12-13

Dobrym zwyczajem jest zmieniać hasło od czasu do czasu. Dlatego administratorzy wymuszają na użytkownikach regularne zmiany, np co 30 lub 90 dni. A co jeśli się wybierasz na dłuższy urlop i zastanawiasz sie, czy po powrocie uda ci się zalogować? Wystarczy sprawdzić, kiedy hasło ma wygasnąć:

Jeśli trzeba sprawdzić hasło użytkownika domenowego uruchom polecenie

net user <nazwa_uzytkownika> /domain

jeśli mowa jest o użytkowniku lokalnym wystarczy pominąć opcję /domain:

net user <nazwa_uzytkownika> /domain

W wyniku odszukaj „Password expires”:

...
Password last set            18-10-21 07:57:50 
Password expires             18-11-21 07:57:50 
Password changeable          19-10-21 07:57:50 
Password required            Yes 
User may change password     Yes 
...
Last logon                   26-07-21 08:35:28
...