Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 16 sep 2021, 14:04

Kategoriregler


Läs följande innan du postar: viewtopic.php?f=208&t=44692
Du får hjälp att komma igång med Ubuntu genom att välja en personlig fadder här: viewtopic.php?f=110&t=8767



Svara på tråd  [ 34 inlägg ]  Gå till sida Föregående  1, 2
 Kul för nybörjare med bash i terminalen 
Författare Meddelande

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
SL står för Steam Locomotive och visar ett ASCII-animerat ånglok.
Kod:
sudo apt update && sudo apt upgrade
sudo apt install sl


SL skapades för att "straffa" de som skriver slarvigt, t.ex. de som ska skriva ls, men vänder på bokstäverna och skriver sl istället.

Det finns 4 olika versioner: det vanliga loket, en olycka (accident) där folk ropar på hjälp, ett litet lok och ett flygande lok:

$ sl
$ sl -a
$ sl -l
$ sl -F


Har man installerat lolcat går det givetvis utmärkt att köra:
$ sl | lolcat


15 jun 2021, 08:08
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
Osprey skrev:
För att nu prata bash och terminal.... ;D

Den gamla klassiska fork-bomben:
Kod:
:(){ :|: & };:
...kör den aldrig, för datorn kommer att tvärhänga sig..... ;)


Då svarar jag med det mest ökända kommandot i Linux, som man ALDRIG ALDRIG ALDRIG ska köra:

$ rm -rf /

Brasklapp: jag har testat det mesta i den här tråden för att vara säker på att det fungerar (ni skulle bli förvånade hur många gamla sidor det finns på nätet som tipsar om saker som inte längre fungerar i Ubuntu 21.04). Men jag har INTE testat någonting i detta inlägg, för jag är ointresserad av att förstöra Linux.
Det betyder att jag inte kan garantera att någonting fungerar så som jag skriver.

Jag kan tänka mig ett par tillfällen då jag skulle testa rm-kommandot:
1. På en dator som jag av någon anledning ska blåsa om. Nyinstallationen kommer ändå formatera om disken.
2. För att testa backupprogram. Det finns två sorters människor: de som tar backup och de som aldrig råkat ut för en hårddiskkrasch. :)
Skämt å sido, väldigt många som tar backup har aldrig testat hur det fungerar, och när de sedan behöver återläsa backupen visar det sig att det inte fungerar för de har missförstått hur man gör.

$ rm -rf / har ungefär samma effekt som format c: i Windows - det raderar hårddisken.
rm betyder remove, d.v.s. det raderar filer och kataloger.
-rf är två växlar: -r och -f, som är förkortningar för --recursive och --force.
--recursive raderar även filer i underkataloger.
--force gör att Linux inte frågar innan det raderar OCH raderar "öppna" filer (normalt kan man inte radera filer som används av systemet).
Och slutligen är / roten, d.v.s. den raderar roten och alla underkataloger. Kort sagt: hela Linux försvinner.

Nu finns det ett antal säkerhetsfunktioner inbyggda i Linux:
1. Man måste använda sudo.
2. Linux kommer ändå fråga om man verkligen är säker på att man vill fortsätta och om man gör det kommer data att förloras. Vill man inte ha kontrollfrågan ändrar man / till /*. * är ett wildcard och betyder "allt". T.ex. så raderar $ rm a* alla filer som börjar på a. För Linux är det ingen skillnad på / och /*, men säkerhetsfunktionen varnar inte när det inte är en ren rot.
Faktum är att kommandot inte raderar allt. Alla dolda filer, de som börjar med punkt, är kvar. Vill man radera allt ändrar man / till /* /.*.

Det finns ett antal "roliga" varianter som antagligen förstör datorn lika mycket:
rm -rf ~ raderar ens hemkatalog. Man får hoppas att ni kan logga in som en annan användare på datorn.
rm -rf /dev/null raderar Linux inbyggda papperskorg. kommandot echo "hej" skriver hej på skärmen, men echo "hej" > /dev/null "försvinner" bara. Ni kanske inte tror att /dev/null används så mycket - men det är för att ni inte märker att det används hela tiden, eftersom syftet är att få saker man inte vill ha att försvinna. Finns det inte längre något "svart hål" att slänga saker i kommer ni snart att upptäcka hur mycket skit Linux producerar.

Vad kan man göra om man varit så dum att man kört kommandot?
Det korta svaret: ni har väl backup?
Annars är det första man gör: DRA UR SLADDEN!!!
Dels tar det tid att radera hårddisken, dels arbetar Linux med cashe så allt skrivs (raderas) inte på en gång.
Sedan behövs en recovery-USB, men det är utanför den här trådens syfte.
Trådens syfte är att ge terminaltips och testdisk är ett återställningsprogram som körs i terminalen:
$ sudo apt install testdisk
Men har man raderat filsystemet kan man inte köra några kommandon eller installera några program. Man måste ha en återställnings-USB, och den har antagligen flera förinstallerade program för att reparera/återställa filsystemet.

Edit: korrigerade --force.


16 jun 2021, 08:49
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
anth skrev:
$ rm -rf /

Hittade ett ännu mer djävulskt kommando:

nohup rm -rf / > /dev/null 2>&1 &

Förklaring:
nohup gör att nästa kommando körs utan no hangup, d.v.s. att ctrl+c inte fungerar.
rm -rf / har vi redan gått igenom.
> /dev/null har vi nämnt, det skickar alla meddelanden till papperskorgen, d.v.s. inget syns på skärmen.
2>&1 : i Linux finns två sorters meddelanden: vanliga (&1) och felmeddelanden (&2). Kommandot gör att felmeddelanden skickas till samma ställe som vanliga meddelanden, och enligt raden ovanför skickas meddelanden till /dev/null. Kort sagt: inte ens felmeddelanden syns på skärmen.
& gör att kommandot skickas till bakgrunden, ungefär som ctrl+z.

Kort sagt:
- Kommandot körs i bakgrunden så det märks inte.
- Kommandot kan inte avbrytas (möjligtvis kan man döda det med killall rm?).
- Både vanliga och felmeddelanden "försvinner" och visas inte.
- Hela Linux försvinner utan att du märker något.


16 jun 2021, 09:39
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
anth skrev:
ALT + PrtSc/SysRq + R E I S U B :
unRaw : take keyboard control from X (har ingen aning om vad det gör)
tErminate : send SIGTERM to ALL processes to gracefully shutdown (som att använda kill utan -9)
kIll : send SIGKILL to ALL processes to forcefully shutdown (som att använda kill med -9)
Sync : flush data to disk (ungefär som när man väljer eject USB, men till ALLA diskar)
Unmount: koppla loss alla diskar (ALLA diskar, inklusive de interna diskarna)
reBoot : (starta om datorn NU)

PrtSc/SysRq brukar sitta ovanför Insert-tangenten (men det kan variera mellan olika tangentbort)

Ex: ALT+PrtSc+B startar om datorn på en gång.

Hittade mer kommandon än R E I S U B.
De går under namnet Magic SysRq Key
https://en.wikipedia.org/wiki/Magic_SysRq_key
och R E I S U B är bara 6 tangenter av hela tangentbordet.


16 jun 2021, 09:41
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
Jag hittade en cool retoterminal.
Antingen var ni med på 1980- och 1990-talet och arbetade i en terminal, eller så har ni sett dem på film:
Små burkar som såg ut som tjock-TV-apparater, ofta mindre än 14"-skärmar; monokroma med orange (amber), grön eller vit text på svart bakgrund.
Faktum är att anledningen till att texten är grön i dagens terminal i Ubuntu är för att det ska likna gårdagens terminal (som inte kunde visa någon annan färg).

För vissa nostalgiker räcker det inte med att ha grön text i terminalen, vissa vill att hela teminalfönstret ska se ut som en monokrom tjock-TV.
För dem finns programmet Cool Retro Term att tanka ner från Github:
https://github.com/Swordfish90/cool-retro-term

Bild

Programmet kommer som en AppImage.
AppImage, Flatpak och Snap är ett enkelt sätt att köra program utan att egentligen installera dem.
Installerar man med apt tankas det ner flera filer och ibland även andra paket som behövs för att köra det man installerar.
En AppImage är bara en fil som innehåller alla filer och paket som behövs för att köra programmet.
Fördelen är att programmet bara är en fil. Nackdelen är att det inte uppdateras automatiskt, utan man måste tanka ner en ny AppImage när det kommer en ny version.

Man tankar ner filen och lägger den var man vill. Förslagsvis skapar man en ny katalog i sin hemkatalog som heter AppImages, för man kommer antagligen skaffa sig flera AppImage-program.
Sedan högerklickar man på filen i sin filhanterare (nautilus, nemo, dolphin, thunar, eller vad ens filhanterare kan tänkas vara), väljer Properties > Permissions och bockar för att filen ska vara Executable, d.v.s. att det är ett program som kan köras.
Sedan är det bara att dubbelklicka på filen och köra den som vilket program som helst.

Så här installerar man i terminalen:
Kod:
cd
mkdir AppImages
cd AppImages
wget https://github.com/Swordfish90/cool-retro-term/releases/download/1.1.1/Cool-Retro-Term-1.1.1-x86_64.AppImage
chmod u+x Cool-Retro-Term-1.1.1-x86_64.AppImage
./Cool-Retro-Term-1.1.1-x86_64.AppImage


Förklaring:
Först går vi till vår hemkatalog. Man kan även skriva cd ~, men bara cd går lite snabbare och gör samma sak.
Sedan skapar vi en AppImages-katalog där vi kan spara alla våra AppImage-program.
Sedan går vi till katalogen.
Sedan tankar vi ner filen med wget. Om ni läser detta i framtiden, kontrollera att version 1.1.1 verkligen är senaste versionen av programmet.
Sedan gör vi programmet körbart.
Sist startar vi programmet.

wget är ett jättesmidigt program för att tanka ner filer. Säg att vi har en bild (i det här fallet Wikipedias logo):
https://upload.wikimedia.org/wikipedia/ ... v2.svg.png
Då kan vi tanka ner bilden till vår hemkatalog:
Kod:
cd
wget https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg/1024px-Wikipedia-logo-v2.svg.png
ls

Eller så kan man specificera en katalog:
Kod:
cd
wget https://upload.wikimedia.org/wikipedia/en/thumb/8/80/Wikipedia-logo-v2.svg/1024px-Wikipedia-logo-v2.svg.png -O ~/Pictures
cd Pictures
ls


chmod ändrar rättigheterna för en fil.
Låt oss skapa en testfil att leka med:
Kod:
cd
touch testfil
ls
cat

som ni ser är filen vit, d.v.s. det är en vanlig fil. Och den är tom, den innehåller ingenting.
Prova kommandot chmod u+x testfil och lista filen med ls; nu är filen grön, d.v.s. körbar.
Använder vi kommandot ls -l får vi en lista på alla filer och vi ser att varje fil börjar med tio streck och bokstäver, t.ex: -rwxrw-r--, sedan ett nummer, ett användarnamn och en användargrupp. Ofta är användarnamnet och användargruppen desamma och antingen ditt användarnamn eller root.
Det första tecknet är normalt ett streck eller ett d om det är en katalog (directory). Kataloger är blåa.
Följande nio tecken är tre grupper om tre: rwx rwx rwx. Rwx står för read, write, execute. De tre grupperna är user, group, other. User syftar på användarnamnet som står efter på raden. Är det ditt användarnamn är du användaren. Group syftar på användargruppen som står efter användarnamnet. Other är alla andra. vill man ha med allt: u, g, o, kan man använda a för all.
Man kan sedan manipulera allt med plus (+) som lägger till, minus (-) som tar bort och likamed (=) som gör exakt så som man skriver.
Testa chmod u=x,g-r,o+x testfil och kolla med ls -l vad som hänt. Ska man ändra allt på en gång kan man skriva chmod a=rwx testfil.

Det går även att använda siffror istället för rwx. X=1, w=2, r=4. Vill man ha r och x lägger man ihop 1+4=5, och vill man ha allt blir det 1+2+4=7.
chmod 755 testfil är detsamma som chmod u=rwx,g=rx,o=rx testfil.

Slutligen skriver man ./ för att köra en fil i den katalog man är i. Detta är vanligt med skript.
Varför måste man skriva ./? Gör man inte det tror Linux att det är kommando och börjar leta i /usr/bin.

Ok, ni har startat den coola retroterminalen: högerklicka på skärmen och välj "Profiles" för att andra färger än standardfärgen amber, t..ex grön:
Bild


29 jun 2021, 10:51
Profil
Användarvisningsbild

Blev medlem: 06 apr 2008, 00:09
Inlägg: 5871
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
anth skrev:
Hittade ett ännu mer djävulskt kommando:

nohup rm -rf / > /dev/null 2>&1 &
Det fanns ett rätt "gräsligt och livsfarligt" kommando i Unix som hette clri (finns till viss del kvar i Linux). Det skriver nollor till en i-node, det vill säga det som i grunden håller ihop filsystemet....

Nu sköts det mesta om automatiskt av fsck/e2fsck, men då var man tvungen att fixa mycket mer manuellt, även om fsck fanns även då. Men om man körde clri utan någon riktig insikt i vad man gjorde, så kunde mycket hända i systemet... ;D

anth skrev:
Jag hittade en cool retroterminal.
Antingen var ni med på 1980- och 1990-talet och arbetade i en terminal, eller så har ni sett dem på film:
Små burkar som såg ut som tjock-TV-apparater, ofta mindre än 14"-skärmar; monokroma med orange (amber), grön eller vit text på svart bakgrund.
Faktum är att anledningen till att texten är grön i dagens terminal i Ubuntu är för att det ska likna gårdagens terminal (som inte kunde visa någon annan färg).
På skolan (1984-85) körde vi Wicat Unix (System V) på terminaler med svart bakgrund och gröna bokstäver/tecken. Sedan gled jag under en tid över mot VAX/VMS (~OpenVMS) och började köra DEC:s terminal VT100 som hade vita tecken på svart bakgrund... Men sedan så kom VT220, som man hade möjlighet att köpa i "amber", det vill säga en brun/orange färg (bärnsten) och den sades vara mer vilsam för ögonen och det var den nog också.... :)

Jag kör fortfarande svart terminal med gröna tecken och det funkar alldeles utmärkt.... ;D

[EDIT] Fast terminalen jag kör (LXterminal) kan visa andra färger också, vilket är perfekt för t.ex vim....

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


29 jun 2021, 13:52
Profil WWW

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
Osprey skrev:
ag kör fortfarande svart terminal med gröna tecken och det funkar alldeles utmärkt.... ;D

[EDIT] Fast terminalen jag kör (LXterminal) kan visa andra färger också, vilket är perfekt för t.ex vim....

Det är otroligt hur lite färg kan påverka upplevelsen.
Den största skillnaden mellan top och htop är färger och musstöd - och de två programmen känns som olika världar.
Dagens ungdom är så bortskämd att det är svårt att tänka sig en tid då både upplösning och färgdjup var en lyxvara.
Jag kommer fortfarande ihåg när jag kom från mina speldatorer (VIC-20, VIC-64, Amiga) med hundratals färger och satte mig framför en IBM-PC för första gången: det var CGA-grafik. Det betydde 4 färger: vitt, svart, cyan och magenta.
Det var sååå vackert... NOT :)
Bild


29 jun 2021, 14:31
Profil
Användarvisningsbild

Blev medlem: 06 apr 2008, 00:09
Inlägg: 5871
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
anth skrev:
Osprey skrev:
Jag kör fortfarande svart terminal med gröna tecken och det funkar alldeles utmärkt.... ;D

[EDIT] Fast terminalen jag kör (LXterminal) kan visa andra färger också, vilket är perfekt för t.ex vim....

Det är otroligt hur lite färg kan påverka upplevelsen.
Jamen vim är ju också "language sensitve" så den märker om man missar en "else", "endif", "{", eller "}". Den ändrar alltså färg om man missat något i syntaxen för det språk man skriver i (t.ex bash, eller "C")....

Så det där är inte enbart en fröjd för ögat, utan underlättar också programmering rätt mycket.... ;D

[EDIT] Nä en miss av "else" kan den givetvis inte märka, men annars så.... ;D ;D

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


29 jun 2021, 16:04
Profil WWW

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
Figlet är ett av sätten man kan göra banners i Linux.
$ sudo apt install figlet
$ figlet Hello World!

ger:
Kod:
 _   _      _ _        __        __         _     _ _
| | | | ___| | | ___   \ \      / /__  _ __| | __| | |
| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| '__| |/ _` | |
|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|
|_| |_|\___|_|_|\___/     \_/\_/ \___/|_|  |_|\__,_(_)

Man kan kombinera med andra program som fortune och lolcat:
$ fortune | figlet
$ figlet Hello World! | lolcat


Dessa producerar samma resultat:
$ figlet Hello World!
$ figlet 'Hello World!'
$ figlet "Hello World!"


Figlet stödjer inte åäö. Om man skriver:
$ figlet ÅÄÖåäö
så blir det en text, men inte i min vildaste fantasi skulle jag kalla det för ÅÄÖ.

Figlet stödjer dock tyska, men då måste man skriva inom citationstecken. [\]{|} blir ÄÖÜäöü.
figlet -D "[\]{|}"[b]

Figlet klarar av radbrytningar
[b]$ echo -e "Hello\nWorld!" | figlet

Echo -e gör att man kan använda escape chracters med echo, och \n betyder "new line".

Figlet kan även ta bort radbrytningar med -p:
$ echo -e "Hello\nWorld!" | figlet -p

Figlet kan skriva ut från filer:
$ echo "The quick brown fox jumps over the lazy dog" > pangram.txt
$ figlet < pangram.txt


Figlet har flera typsnitt:
$ ls /usr/share/figlet/
Det finns: banner, big, block, bubble, digital, ivrit, lean, mini, memonic, script, shadow, slant, small, smcript, smshadow, smslant, standard, term.
Testa:
$ figlet -f script Hello World!
Det vanliga typsnittet som används om man inte specificerar något är "standard" och "ivrit" skriver baklänges.

Texten kan även justeras: -l vänsterställd, -c centrerar och -r högerställd.
$ figlet -r Hello World!
Vid första anblick verkar -l meningslös, men den kan användas med typsnittet ivrit.

Om ni kör terminalen i fullskärmsläge ser ni att -r inte flytter texten längst ut till höger. Det beror på att figlet förutsätter att terminalen är 80 tecken bred.
Detta kan ändras med -w där man specificerar hur många tecken bred terminalen är, eller -t som använder hela terminalbredden. Vill man ha högerställtext i en 160 tecken bred terminal skriver man:
$ figlet -rw 160 Hello World!

Figlet skriver samman alla bokstäver. Vill man ha avstånd mellan bokstäverna använder man -k.
$ figlet -k Hello World!


04 jul 2021, 08:50
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
SSH är det vanliga sättet man brukar använda för att kommunicera mellan datorer i Linux.
(det utvecklades från början till BSD, Linux syster-OS som också bygger på UNIX)
Detta kräver alltså TVÅ datorer och att dessa ser varandra på nätet.
Det borde räcka med med två laptops på ens hem-wifi.

Först måste vi ta reda på vad de har för IP-adress. Och för att göra det måste vi veta vad Linux döpt nätverkskorten till.

För att lista filerna i en katalog skriver man:
$ ls
I Linux är ALLT "filer", även fysiska saker.
Vill man lista alla enheter skriver man:
$ ls /dev
Vill man lista alla processer skriver man:
$ ls /proc
Och vill man lista nätverkskorten:
$ ls /sys/class/net

Förr använde Linux logiska namn som eth0 för ett vanligt nätverkskort som använde ethernet och wlan1 för trådlöst WiFi.
Numera brukar man använda mer kryptiska namn.
På min gamla laptop har jag: eth0 lo wlan0.
På min nya laptop har jag: lo wlp1s0.
Alla datorer som har nätverk har lo, Det är så datorn refererar till sig själv. Den egna datorn, lo, har IP 127.0.0.1, det är "hem"-adressen, eller "local".
Då jag inte vet vad ditt nätverkskort heter kommer jag konsekvent skriva eth0, byt ut det mot vad ditt kort heter.

Nu ska vi ta reda på vad datorn heter på nätet:
$ ip address
Det går även bra att skriva ip addr eller ip a, de gör exakt samma sak.
Det listar alla nätverksanslutningar.
Först kommer lo som har inet 127.0.0.1.
Inet är IPv4, en vanlig IP-adress, d.v.s. fyra nummer mellan 0-255.
Inet6 är det nyare IPv6 som vi struntar i (nästan inga hemdatorer använder det).
Sedan kommer nästa nätverk som förhoppningsvis heter eth0. Kom ihåg de fyra numren efter inet.
Vanliga hemnätverk brukar ha ett 192.168.0.XX-nät och jag kommer använda det i exemplen nedan. Byt ut det mot vad ditt nät och datorer heter.
Min ena dator har fått adressen 192.168.1.107 och den andra 192.168.1.109 - men jag kommer kalla dem för 192.168.0.10 och 192.168.0.100.

Försök pinga den ena datorn från den andra. Sitter jag framför 192.168.0.10 skriver jag:
$ ping 192.168.0.100
Förhoppningsvis får man ett svar i stil med:
64 bytes from 192.168.0.100: icmp_seq=1 ttl=64 time=3.45 ms
Man avslutar ping med CTRL+C, annars fortsätter det i evighet.

Då har vi förhoppningsvis två datorer som ser varandra på nätet.
Nu ska vi se om vi har SSH installerat.
$ apt search openssh-client
min dator svarar:
Kod:
openssh-client/focal-updates,focal-security,now 1:8.2p1-4ubuntu0.2 amd64 [installed,automatic]
  secure shell (SSH) client, for secure access to remote machines

Den säger [installed,automatic] vilket är vad jag vill se.
Sedan provar vi:
$ apt search openssh-server
Nu får jag svaret:
Kod:
openssh-server/focal-updates,focal-security 1:8.2p1-4ubuntu0.2 amd64
  secure shell (SSH) server, for secure access from remote machines

Här är paketet inte installerat.
Det vanliga i de flesta distros är att klienten är installerad, men inte servern.
I vissa distros finns bara ett paket som heter openssh, det innehåller både klienten och servern.
Välj en dator som ska bli server och installera:
$ sudo apt install openssh-server
Det går utmärkt att installera servern på bägge maskinerna, det enda man behöver hålla reda på är att datorn man sitter vi är klient och datorn man inte sitter vid är server.
I nedanstående exempel är klienten 192.168.0.10 och 192.168.0.100 servern.

Ta en titt på vad det står i prompten i terminalerna i datorerna. Det borde stå något i stil med:
user@computer:path$
Förhoppningsvis har ni inte döpt datorerna till samma sak. Det är inget problem om de heter samma, men det är svårare att se på vilken maskin man är inloggad.
Nedan låter jag 192,168.0.10 ha adam@client:~$ och 192.168.0.100 ha bertil@server:~$.

På klienten skriver vi:
$ ssh user@server-ip
I mitt fall blir det:
$ ssh bertil@192.168.0.100
Första gången man ansluter får man ett meddelande i stil med:
The authenticity of host '192.168.1.107 (192.168.0.100)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Skriv yes och tryck RETUR.
Skriv sedan användaren på serverdatorns lösenord och tryck RETUR.
Nu ska prompten ha ändrats till serverdatorn och kommandona du skriver utförs på servern, inte på klienten.

Det finns tre sätt att lämna servern (förutom att stänga terminalfönstret): skriva exit, logout, eller trycka CTRL+C.

Nu har det slutat regna och solen tittar fram så det får räcka för idag.
Nästa gång tänkte jag skriva om hur man ansluter från Windows, hur man flyttar filer mellan datorerna och hur man gör en säkrare anslutning med nycklar.
:)


10 jul 2021, 09:49
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
SSH del 2

Det är praktiskt att komma åt en annan dator coh köra kommandon där, men en av anledningarna till att man kopplar ihop två datorer är att man vill kopiera filer mellan dem.

Det vanliga kopieringakommandot cp fungerar så här:
(det spelar ingen roll om du är uppkopplad med ssh mot den andra datorn, eller om du loggat ut och är tillbka på den lokala datorn)
Kod:
mkdir one two
echo "hello" > one/source
cp one/source two/target
cat one/source two/target
rm -rf one two

Förklaring:
mkdir one two skapar två kataloger, du kan kontrollera med ls.
echo "hello" > one/source skapar filen source med texten hello i katalogen one, du kan använda nano istället.
cp one/source two/target kopierar filen source från katalogen one och döper om den till target i katalogen two.
cat one/source two/target skriver ut filerna, både source som vi skapade och target som vi kopierade.
rm -rf one two tar bort bägge katalogerna med allt innehåll. VARNING! -rf tar bort allt i underkataloger utan att fråga. Programmet förutsätter att du vet vad du gör och att du vill ta bort.

Låt oss använda scp istället. Se det som ssh cp.
Logga ut från servern.
Kör
Kod:
echo "test" > test1
scp test1 bertil@192.168.0.100:test2
ssh bertil@192.168.0.100
cat test2

Förklaring:
echo "test" > test1 skapar en filen test1 lokalt.
scp test1 bertil@192.168.0.100:test2 kopierar den lokala filen test1 och döper om den till test2.
Du kan givetvis skriva sökvägar som scp one/test1 bertil@192.168.0.100:~/two/test2.
Och du kan självklart kopiera från servern till klienten: scp bertil@192.168.0.100:~/two/test2 one/test1.
ssh bertil@192.168.0.100 logga in på servern och kolla med cat test2 att filen är kopierad.

Jag har faktiskt inte hunnit testa vad som händer när man kopiera till/från "säkra" kataloger, t.ex. om man vill kopiera från /etc på klienten till /etc på servern. Normalt behöver man sudo på bägge sidor om man inte är root.

Förutom scp finns sftp. Se det som ssh ftp. Har ni arbetat med hemsidor har ni antagligen använt ftp, som står för file transfer protocol, för att flytta filer.
Se till att ha någon fil på klienten som inte finns på server och vise versa. Logga ut från servern och skriv:
$ sftp bertil@192.168.0.100
Prompten kommer nu att ändras till:
sftp>
Prova skriv help. Man kan även skriva ? för hjälpen.
Man kan avsluta med bye, exit, quit.
Kommandona ls, cd, pwd gäller för servern. För klienten använder man !, så här: !ls, !cd, !pwd. Ibland kan man använda l så här: lls, lcd, lpwd. Se hjälpen.
För att ladda ner en fil använder man get file, där file är en fil som finns på servern, men inte på klienten.
För att ladda upp en fil använder man put file, där file är en fil som finns på klienten, men inte på servern.


11 jul 2021, 09:01
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
SSH del 3

Att använda ssh från Windows 10 skiljer sig inte från linux.
Från Windows 10 ska ssh vara installerat från början.
Börja testa att pinga mellan windows och linux så man inte har någon brandvägg eller liknande emellan som blockar.
Sedan är det bara att öppna cmd eller powershell och använda ssh, scp och sftp.

Skulle det inte fungera, gå till:
inställningar < appar > appar och funktioner > valfria appar > Lägg till en funktion : OpenSSH-klient eller OpenSSH-server
Precis som i Linux brukar klienten vara installerad, men inte servern.

Man kan även kontrollera direkt i powershell med kommandot:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Glöm inte att trycka Retur efter att du klistrat in.

Jag fick detta som svar:
Kod:
Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

För att installera servern skriver man
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Ni får själva räkna ut vad man skriver för klienten. :)
Förutom att installationen av servern tar tio gånger längre tid i Windows än Linux fungerar det på samma sätt.

Innan OpenSSH fanns till Windows fanns det andra sätt att ansluta från Windows.
De vanligaste är
PuTTY som låter en ansluta med SSH och sedan öppnar ett terminalfönster.
WinSCP som låter en kopiera filer mellan datorer via två grafiska fönster (ser ut lite sm ett grafiskt ftp-program).
FileZilla. Antagligen det vanligaste ftp-programmet som finns både till Linux och Windows. det klarar även av sftp.
Jag är säker på att ni klarar av alla tre om ni kommit så här långt.

###

En liten varning:
Windows använder sig av andra filformat än Linux.
Normalt kan man kopiera bilder och filmer utan problem, men man kan få problem med vanliga textfiler.
Det har att göra med att Windows använder andra format för line feed och end of line.
Windows skriver CRLF (\r\n, 0D 0A) line endings
Linuxx skriver LF (\n, 0A).

Linux använder UTF-8.
Windos använder UTF-16LE

Windows använder BOM, vilket inte Linux gör.
Smidigast är att använda Notepad++ i Windows och spara filerna "without BOM"

Men det är utanför ämnet för den här tråden.

EDIT:
1. Efter att man installerat OpenSSH Server i Windows måste man aktivera den.
Det görs i Tjänster/Services.
Öppna tjänster, leta reda på "OpenSSH SSH Server", högerklicka och välj Starta.
Det har samma effekt som sudo systemctl start sshd i Linux.
Vill man ha motsvarande som enable i Linux, måste man högerklicka och välja Egenskaper/Properties, för att sedan ändra Startmetod från Manuellt till Automatiskt.

2. I windows kan man bara avsluta en SSH-anslutning med exit. Logout eller ctrl+c fungerar inte.

3. Jag har inte fått keys att fungera i windows. De ska fungera, men jag inte får dem att fungera.


Senast redigerad av anth 14 jul 2021, 16:01, redigerad totalt 1 gång.



11 jul 2021, 10:12
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
SSH, del 4

Låt oss se hur man konfigurerar ssh

På klienten, gå till:
$ cd ~/.ssh
Visa vad som finns:
$ ls
Det borde bara finnas en fil som heter known_host
Den innehåller en lång kodsträng för varje dator man kopplat upp sig mot.
Det gör inget om man raderar filen, det enda som händer när man försöker ansluta nästa gång är att man får frågan om man vill koppla upp sig som man fick första gången - och filen skapas igen.

Skapa en ny fil i .ssh-katalogen:
$ touch config
redigera filen med din favoritredigerare, t.ex. nano:
$ nano config

Lägg till följande:
Kod:
Host minfavoritserver
  Hostname 192.168.0.100
  Port 22
  User Bertil

Spara och stäng. Nu kan du ansluta med:
$ ssh minfavoritserver
Man kan givetvis döpa sina anslutningar till precis vad man vill.
Har man fler ssh-anslutningar är det bara att lägga till dem i filen.

Låt oss titta på servern
Här heter programmet sshd
D står för att det är en daemon, d.v.s. en tjänst som kör i bakgrunden, eftersom man kan logga in när man vill.
Gå till:
$ cd /etc/ssh
och se vad som finns:
$ ls
En av filerna är sshd_config, se vad den innehåller:
$ less sshd_config

Det finns några rader som är intressanta:
#Port 22
...
#PermitRootLogin yes
...
#PasswordAuthentication yes


Som ni säkert räknat ut använder sig ssh av port 22.
Om man ändrar till en annan port både på klienten och servbern blir det lite svårare för en hackare att ta sig in (inte mycket, men lite svårare).
Max port man kan välja är 65535.
Man bör inte logga in som root, så ändra från yes till no.
Jag kommer lite senare visa hur man loggar in med nycklar istället för lösenord. När ni börjat använda nycklar kan ni ändra till no efter PasswordAuthentication.

Tänk på att i /etc måste ni använda sudo för att göra ändringar.
$ sudo nano /etc/ssh/sshd_config

Glöm inte att ta bort # före de saker ni vill använda. #, // och ; används för kommentarer och de "körs" aldrig.

Efter man sparat och stängt filen måste man starta om tjänsten med systemctl.
Här är några av de vanligaste kommandona som systemctl använder: status, enable, disable, start, stop, restart, reload.
Börja kolla statusen:
$ systemctl status sshd
Enable/disable bestämmer om tjänsten ska startas när datorn startas. Observera att det inte påverkar datorn nu, utan bara nästa gång datorn startas om.
Så väljer man enable betyder det inte att tjänsten startas nu. Och väljer man disable så betyder det inte att tjänsten stoppas nu. För det behöver man start och stop.
Restart är som att först köra stop och sedan start. Reload däremot stoppar tjänsten, laddar in konfig-filen igen och startar sedan.
Eftersom vi ändrat konfig-filen vill vi använda reload:
$ sudo systemctl reload sshd
Observera att nu måste vi använda sudo.

Nästa gång kommer vi förhoppningsvis till keys som är det HÄFTIGASTE med ssh!


12 jul 2021, 17:15
Profil

Blev medlem: 22 aug 2019, 15:35
Inlägg: 197
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Kul för nybörjare med bash i terminalen
SSH del 5
Vad är nycklar och varför ska man använda dem?
Även om du aldrig använt nycklar använder din dator dem hela tiden.

Säkra nycklar kommer i par: en privat nyckel och en publik.
Det vanliga sättet att använda nycklar är:
Alice krypterar ett meddelande med sin privata nyckel och Bobs publika nyckel, hon skickar sedan det krypterade meddelandet till Bob.
Bob dekrypterar sedan meddelandet med sin privata nyckel och Alices publika nyckel.
Man krypterar alltså med den ena nyckeln och dekrypterar med den andra i nyckelparet.
Det bästa av allt är att även om man har tillgång till en publik nyckel kan man inte knäcka den privata - det är denna finess som gör systemet säkert.

Först skapar man ett nyckelpar:
$ ssh-keygen
Programmet frågar tre saker: var nycklarna ska sparas, vilken passphrase man ska ha och bekräfta passphrase igen.
Just nu räcker det att trycka Retur tre gånger.

Nycklarna sparas här:
$ ls ~/.ssh
De heter id_rsa och id_rsa.pub.
Rsa är krypteringsformatet och pub är den publika nyckeln.
Så länge man inte använder nycklarna kan man radera dem och skapa nya (det blir helt nya unika nycklar varje gång):
$ rm ~/.ssh/id_rsa*

Rsa är inte det säkraste formatet, det är ed25519. Prova:
$ ssh-keygen -t ed25519
Nycklarna heter nu id_ed25519 och id_ed25519.pub.

Prova att se vad den publika nyckeln innehåller:
$ cat ~/.ssh/id_ed25519.pub
Det borde se ut ungefär så här:
ssh-ed25519 kljfadlkjawefhusdhnlkjsdfhkljsdfahlkjh user@computer
Först kommer info om vilken sorts nyckel det är, sedan själva nyckeln, sist vem som skapat nyckeln.

Låt oss återgå till de tre frågorna man får när man skapar nycklar.
Om man fyller i sökvägen kan man välja ett annat namn på den privata nyckeln. Välj ett namn som gör det lätt att identifiera vem som skapat nyckeln, t.ex: user_computer_id_ed25519.
Välj även en passphrase, det är som ett lösenord för nyckeln.

Det går även utmärkt att döpa om filerna efter man skapat dem:
$ mv ~/.ssh/id_ed25519 ~/.ssh/hejhopp && mv ~/.ssh/id_ed25519.pub ~/.ssh/hejhopp.pub
Observera att man använder komandot för att flytta filer, mv, när man döper om filer.

När du skapat ett nyckelpar du vill använda och raderat de nycklar du inte vill använda är det dags att ladda upp den publika nyckeln till servern:
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub minfavoritserver
Ersätt med id_ed25519 med vad du döpt filen till.
Ersätt minfavoritserver med vad du döpte servern till i config, eller använda den vanliga anslutningen bertil@192.168.0.100
Logga in precis som om du skulle ansluta till servern.
Datorn ska svara:
Number of key(s) added: 1

Prova att logga in.
Om du använt passphrase kommer en ruta upp som frågar om lösenordet till nyckeln. Du ska fylla i din passphrase och inte något lösenord. Detta behöver man bara fylla i en gång, logga ut och anslut igen så ser du att ingen passphrase behövs igen.

Se vad som hänt i .ssh-katalogen på servern:
$ ls ~/.ssh
Där finns en ny fil: authorized_keys
Se vad den innehåller:
$ cat ~/.ssh/authorized_keys
Det är klientens publika nyckel!

Nu när man kan logga in med nycklarna är det dags att stänga ssh-inloggning med lösenord. Gå till:
$ sudo nano /etc/ssh/sshd_config
ändra
#PasswordAuthentication
till
PasswordAuthentication no
spara och stäng. Starta om tjänsten:
$ systemctl reload sshd

Nu är anslutningen så säker som den kan bli.


14 jul 2021, 14:08
Profil
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 34 inlägg ]  Gå till sida Föregående  1, 2

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011