PETR MACEK >
osobní stránka >
Začal jsem psát články trosku verejneji :-). Proto uľ tuto rubriku neplním. Snaľím se psát o věcech, které denně pouľívám - FreeBSD, sendmail, shell tipy, ...Psal jsem také pro českou verzi časopisu Linux+, dokud vychazela.

Seznam článků na root.cz http://www.root.cz/autori/petr-macek/


Staré, zde zveřejňované, věci:

1: Jednoduchá synchronizace času
2: Záloha MySQL databáze po síti pomocí SSH
3: Screen II. - prezentace nebo také více uživatelů v jedné konzoli
4: Jednoduchý kalendář v shellu
5: Pekný barevný shell prompt a záhlaví okna (ssh klient) - bash
6: Smazání obsahu souboru (zachování práv a vlastníka)
7: Vyhledávání v souborech - Unix i linux
8: Restart (nebo jiná NEOPAKUJÍCÍ SE činnost ) v naplánovaný čas
9: Apache - více jmen pro jeden virtuální server
10: MySQL - několik příkazů pro zjištění informací o sql serveru, tabulkách, ...
11: Program logcheck - kontrola podezřelých hlášek logů (FreeBSD)
12: Příkaz dmesg - výpis bufferu systémových zpráv
13: Příkaz last - informace o přihlašování, restartech a vypnutí serverů
14: Informace o restartech serverů
15: Password a old_password v mysql 4.x
16: Zapomenuté root heslo do MySQL
17: Zjišťování informací o síťových prvcích (karty, routery) podle MAC adresy
18: Utilitka window - dva výstupy na jednom monitoru
19: Mail s přílohou posílaný přímo ze shellu (linux-unix)
20: Screen - velice užitečná utilitka
21: Rychlé odhlášení ze shellu
22: Změna mapování kláves v konzoli (praktický příklad: na num. klávesnici budeme místo tečky psát čárku) - pro linux
23: Rychlé příhlašování pomocí ssh
24: SSH - autorizace klíčem
25: Portaudit (pro FreeBSD)
26: Pravidelné zasílání auditů a informací o systému (pro FreeBSD)
27: Pohodlné a bezpečné kopírování souborů mezi víse stroji pomocí ssh, scp
28: Příkaz vykonaný na vzdáleném stroji pomocí ssh
29: FTP klient v midnight commanderu
30: Rychlá změna adresáře v midnight commanderu
31: Kopírování textu v midnight commanderu



1: Jednoduchá synchronizace času
Přesný čas je v IT poměrně důležitý. Na routerech nepotřebuji super přesný čas, ale když běží několik měsíců, může se za tu dobu čas rozejít o hodně minut. Abych na takové nevýkonné stroje nemusel instalovat a konfigurovat NTP démona na synchonizaci, spouštím 1x denně pomocí cronu toto:
/usr/sbin/ntpdate tak.cesnet.cz >> /root/ntp_log

Ntpdate je snad na všech strojích, záznam v cronu vypadá takhle:
15 23 * * * /usr/sbin/ntpdate tak.cesnet.cz >> /root/ntp_log
Pokud necháte i to přesměrování do souboru ntp_log, získáváte přehled, jak často a o kolik se čas posouvá. Misto serveru tak.cesnet.cz je mozne vyuzit spoustu jinych casovych serveru



2: Záloha MySQL databáze po síti pomocí SSH
Mysql server uz dnes samozřejmě podporuje i replikace, ale pokud chci pravidelně zálohovat jen jednu databázi, stačí mi k tomu jen ssh a běžné mysql nástroje (mysqldump a mysql klient). Výhodou řešení je, že data jsou přenášena pomocí ssh, takže šifrovaně. Příkaz se spouští na stroji, kam ji chceme naimportovat. Jak to vypada:
ssh pm@stroj mysqldump -uroot -pheslo pm_pokus | mysql -uroot -pheslo pm_pokus

Příkaz si rozdělíme do 3 částí:
ssh pm@stroj - nás přes ssh příhlási na daný stroj
mysqldump -uroot -pheslo pm_pokus - nám vytvoří zaálohu databáze pomocí mysqldump
mysql -uroot -pheslo pm_pokus - a tímto ji naimportujeme na cílový server. Pomocí "|" ppředáváme výstup mysqldumpu jako vstup do mysql klienta.



3: Screen II. - prezentace nebo také více uživatelů v jedné konzoli
Pokud chcete někomu ukazovat, co na jeho stroji děláte nebo chcete vzájemně spolupracovat v jedné konzoli, není to problém. Přihlašte se oba jako stejný uživatel, první potom spustí screen. Druhý pak spustí screen -x a v tu chvíli oba pracují v jednom společném screenu. Ukončení práce se provede příkazem exit.
screen ve všech distribucích není, nejprve si jej doinstalujte.
Související tip zde



4: Jednoduchý kalendář v shellu
Na stole kalendář většinou nemám, ale pokud máte puštěný linux/unix terminál, zkuste příkaz cal. Např:
cal -y zobrazí kalendář na celý rok
cal zobrazí kalendář pro současný měsíc
cal -m x zobrazí kalendář pro měsíc x

Program ncal též zobrazuje kalendáře (má i stejné parametry), jen má jiné zobrazení.



5: Pekný barevný shell prompt a záhlaví okna (ssh klient) - bash
Hodně jsem si na to zvykl. Když se na server přihlásím jako uživatel (ne root), mám prompt žlutý, kyž jsem root, tak červený a hlavně všude stejný (user@host aktualni adresar). Dále si upravuji záhlaví okna, mám tam vidět celou cestu, k adresáři, ve kterém se právě nacházím.

Na oba tyto detaily jsem si rychle zvykl. Je mnoho způsobů, jak toho docílit. Ja to chci mít všude stejně, tak využívám (ve freeBSD) soubor /etc/profile (jen dopisuji na konec).

case $TERM in
  xterm)
   PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
  ;;
  *)
   PROMPT_COMMAND=''
  ;;
esac
# prompt
me=`whoami`
case $me in
  root)
   PS1='\[\033[0;31m\]\u@\h \W\[\033[1;37m\] \$\[\033[0;37m\] '
  ;;
  *)
   PS1='\[\033[1;33m\]\u@\h \W\[\033[1;37m\] \$\[\033[0;37m\] '
  ;;
esac


Skript je asi jasný, rozlišuji, zda se hlásím xtermem (sshklient v linuxu, putty) nebo jinak. Druhé rozhodování je o tom, zda jsem root nebo ne



6: Smazání obsahu souboru (zachování práv a vlastníka)
Někdo prostě smaže soubor a pak např:
touch soubor
chmod 0600 soubor
chown vlastnik:skupina soubor

Ale jde to i jednodušeji, bez smazaání souboru. V bashi např:
> soubor

V jiných shellech pak třeba takhle:
cat > soubor [ted stisknout ctrl + d]




7: Vyhledávání v souborech - Unix i linux
Dva příklady na vyhledávání souborů, které obsahují vyhledávaný text. (Myslím, že jeden si s nějakým linuxem moc nerozumněl, zkuste radši oba :-)

grep [parametry] hledany_text kde

Zobrazuje název souboru a řádek, který daný text obsahuje.

Praktické příklady:
grep -ri permitrootlogin /* - prohledá celý disk a hledá slovo permitrootlogin. Nerozlišuje velká a malá písmena (parametr i)
grep -r "PLATBA PROVEDENA" /home/pm/* - vyhledá dvouslovný výraz, rozlišuje malá a velká písmena

Parametr r provádí rekurzivní hledání - prochází i podadresáře. Když ho vynecháte, prohledá se jen součaasný adresář

find kde -name '*' -exec grep -l 'hledany_text' {} \;

Toto zobrazí jen jména souborů obsahující text.

find / -name '*' -exec grep -l 'permitrootlogin' {} \; - stejně jako první praktická ukázka prvního příkazu



8: Restart (nebo jiná NEOPAKUJÍCÍ SE činnost ) v naplánovaný čas
Na periodicky prováděné činnosti se využívá cron, na jednorázovou použijte příkaz at. Stačí napsat at ČAS [enter], kde ČAS se dá napsat několika způsoby, více najdete v manuálu přikazu at. Po odenterování můžete psát přikazy. Může jich být i více. Když si zadáte vše, zmáčkněte ctrl + D a program oznámí, že je vše připraveno:
root@mail # at 23:00 [enter]
reboot [ctrl+D]
Job 4 will be executed using /bin/sh


Pokud se chcete podívat na načasované úlohy, použijte příkaz atq, jeho výstup vypadán nějak takhle:
Date                            Owner           Queue   Job#
Tue Jun 27 23:00:00 CEST 2006   root            c       4


Pokud chcete nějakou úlohu smazat, použijte atrm [cislo_jobu]. Číslo jobu zjistíte z výpisu atq



9: Apache - více jmen pro jeden virtuální server
Narazil jsem na situaci, kdy má zákazník doménu firma.cz (adresa www.firma.cz). Teď si přikoupil další domény (firma.com, firma.sk) a chce aby www.firma.com a www.firma.sk ukazovaly na www.firma.cz, s tím, aby v adresním řádku prohlížeče zústávala uživatelem vložená adresa. Našel jsem několik řešení, některé pracovali s více virt. servery, jiné zase s mod_rewrite a redirectem. Já to udělal velice jednoduše:

1) změnit si příslušné DNS záznamy, aby ukazovali na stejnou IP
2) založit v httpd.conf virt. server:
<VirtualHost *>
ServerAdmin pm@nekde.cz
DocumentRoot /home/firma_cz
ServerName www.firma.cz
ServerAlias www.firma.com www.firma.sk
ErrorLog /var/log/www.firma.cz-error_log
CustomLog /var/log/www.firma.cz-access_log common
SSLEngine off
</VirtualHost>


Pak už jen restart apache a je to.



10: MySQL - několik příkazů pro zjištění informací o sql serveru, tabulkách, ...
Zkuste v klientu např. show status a show variables
Další krásný příkaz, který si nikdy nepamatuju:
show table status from databaze like 'tabulka';

Poví vám o tabulce spoustu důležitých údajů, např. collation, typ tabulky, počet záznamů, max. velikost tabulky, současnou velikost

A na zjištění podporovaných znakových sad a colaltion můžete použít: show charset a show collation



11: Program logcheck - kontrola podezřelých hlášek logů (FreeBSD)
Na částečnou kontrolu logů používám dříve popsaný tip (/etc/periodic.conf). Ale mám servery, kde mne zajímají jiné údaje z logů než periodic posílá. Ke zpracování logů je určen port /usr/ports/security/logcheck. Je malý, jednoduše konfigurovatelný, člověk si může sám určit, jaké hlášky od něj chce dostávat. Instalace:
cd /usr/ports/security/logcheck
make install clean
cd /usr/local/etc/
zde přejmenovat všechny soubory logcheck.*.sample na logcheck.* (prostě se zbavit slovička sample v názvu) a v logcheck.sh (spustitelný soubor) upravit mailovou adresu, kam výstup posílat.
Logcheck pracuje tak, že v konfiguračních souborech (logcheck.hacking, logcheck.violations) má výrazy, které v logu vyhledává a tyto řádky pak posílá emailem. Zároveň jsou zde soubory, logcheck.ignore a logcheck.violations.ignore, které obsahují slova, které mají být ignorováné. Slova není úplně správný vyjádření, jsou zde vlastně regulární výrazy. Díky těmto souborům si můžete ovlivnit co posílat (např. chcete znát výstupy Vašeho démona, nebo např. chcete vidět logy ftp serveru,... )
Logcheck si pamatuje, které záznamy posílal naposledy, takže se neopakuje. Vhodné je dát jej do cronu, aby se pravidelně spouštěl.
Související tip zde



12: Příkaz dmesg - výpis bufferu systémových zpráv
dmesg vypisuje obsah bufferu systémových zpráv. Ty najdete i ve /var/log/messages. Obsahuje vše včetně nalezeného hw při startu sytému, spouštění služeb, ... Tenhle log ale podle velikosti nebo času rotuje (staré záznamy se odkládají do archivů). Toto vše je možné si nakonfigurovat. Buffer není nekonečně velký, takže vše najdete ve /var/log/messages a dalších archivech.
Často potřebuju vidět, jak systém nabíhal. To je uložené ještě samostatně v souboru /var/run/dmesg.boot. Zde se to najde snadněji než v archivech. Pokud hlášek není moc a vejdou se bufferu, je možno vše vypsat pomocí dmesg -a



13: Příkaz last - informace o přihlašování, restartech a vypnutí serverů
Příkaz last Vám vypíše kdo se za poslední dobu k serveru přihlásil a jak, výstup vypadá třeba takhle:
pm ttyp0 192.168.222.45 Wed Mar 29 11:14 still logged in
reboot ~ Wed Mar 29 11:10
shutdown ~ Wed Mar 29 10:57
pm ttyp0 192.168.222.45 Wed Mar 29 10:56 - shutdown (00:00)
root ttyv0 Wed Mar 29 08:22 - 08:23 (00:01)
reboot ~ Wed Mar 29 03:02

Pokud si chcete vypsat jen statistiky pro jednoho uživatele, stačí zadat last jmeno_uzivatele

Ve výpisu jste si mohli postřehnout, že je tam i "uzivatel" reboot a shutdown. Nejedná se samozřejmě o uživatele, tak je značen restart a reboot. Přikaz last reboot Vám vrátí seznam časů posledních restartů (pokud proběhly korektně a ne např. výpadek el. energie)



14: Informace o restartech serverů
Čím víc serverů mám, tím snadněji můžu přehlédnout nějaké chyby. Nedávno se mi jeden server hodně často restartoval, trvalo mi déle než bych chtěl, než je zdrávo. Tak jsem si udělal jednoduchou berličku. Soubor /etc/rc.local se spouští při každém startu systému. Tak jsem do něj připsal (pokud není, tak založil):
#!/bin/sh

echo `hostname` `date +%d.%m-%H:%M` | mail -s "restart serveru" macek.petr@nejakymail.cz


Souboru je nutné nastavit práva na spuštění, mám nastaveno 755. Na daném stroji musí být samozřejmě zkonfigurován nějaký mail. server.



15: Password a old_password v mysql 4.x
Ve verzi 4.x došlo k důležité změně týkající se hesel. Funkce password změnila šifrovací algoritmum a klíč je teď delší (a začína znakem *). Pokud máte nějakou aplikaci, která spoléhá na starý systém šifrování hesel musíte spustit mysqld s parametrem --old-passwords (nebo ho přidat do my.cnf konfiguračního souboru) a server pak používá starý systém.
Když pak chcete generovat hesla starým způsobem, použijte místo funkce password funkci old_password (např. update users set password=old_password('heslo') where ...)



16: Zapomenuté root heslo do MySQL
Jednou z cest, jak se dostat do databáze, když jste zapomněli heslo je smazání databáze mysql (většinou někde /var/db/...) a její nové vytvoření (některé instalace na to mají přímo skript). Má to pár nevýhod (přijdete o existující uživatele) a celkově to řešení není moc "čisté". ALE existuje ještě další a lepší řešení. Ukončete mysql démona (někdy mysqld_safe) a spusťte jej s následujícími parametry:
mysqld --skip-grant-tables --user=root &

Tím na pozadí spustíte mysql démona, který dá přístup komukoli ke všem databázím (takže velký pozor a rychle potom server restartovat se správnými parametry). Díky tomu, že jsou práva všech na všechno, můžete i do databáze mysql. Takže potom postupovat následovně:
mysql
use mysql
update users set password=password('nove_heslo') where user='root'
flush privileges

Postup je to jasný - změníme heslo a dáme znovu načíst sytém práv.




17: Zjišťování informací o síťových prvcích (karty, routery) podle MAC adresy
Když zjistíte v síti nějakou novou MAC adresu a chcete se o ní dozvědět více (většinou výrobce, někdy jde zjistit i typ zařízení) zadejte první 3 bajty MAC adresy na adrese:
http://www.coffer.com/mac_find/

Praktický příklad - mám MAC adresu 00:40:8C:68:E3:FD, na vyhledávací www stránce zadám 00:40:8C a hned vím, že je to zařízení od Axis Communications AB



18: Utilitka window - dva výstupy na jednom monitoru
Hodně stará a užitečná utilitka, kterou spousta lidí nezná. V podstatě rozdělí terminál na dva (nebo více) a ty zobrazuje na jedné obrazovce. Uživatel má možnost se mezi nimi přepínat, měnit velikost a pozici oken.

Po spuštění příkazu window se Vám rozdělí obrazovka na dvě poloviny. Pomocí kombinace ctrl + p se dostanete do menu a z něho se vychází:
změna aktivního okna: zadat cislo okna [enter]
zavření okna: c + cislo okna [enter]
otevření dalšího okna: w [enter)
změna velikosti okna: s + cislo okna [enter], potom klávesy HJKL na pohyb
ukončení: q [enter] help: ?

Malá ukázka



19: Mail s přílohou posílaný přímo ze shellu (linux-unix)
program mail ve většině distribucí neumí poslat přílohu (až na vyjímky). Ale jde si snadno pomoci programem uuencode. Ten vezme soubor (nebo čte std. vstup) a překóduje jej do formátu, který používá jen tisknutelné znaky. Zároveň výstup opatří potřebnou hlavičkou a patičkou. Praktický příklad, budeme si pomocí mailu posílat soubor pokus.bin, posleme jej s nazvem priloha.bin:

uuencode pokus.bin priloha.bin | mail -s "posilam si soubor" muj@email.cz

Někteří emailový klienti (a třeba některé freemailové služby) s uuencode nepracují nejlépe. Osobně s tím ale problém nemám (používám mozillu, thunderbird, outlook, novell groupwise)



20: Screen - velice užitečná utilitka
Občas se stane, že jsem přihlášen k nějakému stroji přes ssh, něco tam kompiluji, ale potřebuju například restartovat své pc z kterého jsem připojen. Někdy zase vím, že proces poběží douho a já bych potřeboval v průběhu dne zkontrolovat jeho stav, ale třeba z různých strojů. Je to možné, jen si před začátkem práce musíte spustit utilitku screen. Po spuštění se téměř nic nezmění, jen pracujede ve screenu. Rozjedete praci. Když zadáte ctrl + d (detach), odhlásíte se od screenu (ale spuštěné programy ve screenu nadále běží). Pak se třeba za půl dne ke stroji znovu přihlásím (třeba i z jiného stroje) a zadám screen -r (reattach) a opět pracuji dál. Když mi třeba kompilace doběhne, zadám exit a screen se ukončí (jen o tom napíše hlášku, to je praktické, aspoň člověk ví kde je :-)
screen má více možností, je možné si spustit více screenu, připojovat se na různé screeny.



21: Rychlé odhlášení ze shellu
Taky se Vám stává, že se hlásíte k jednomu stroji, z něj na další, pak třeba pomocí su ještě přpnutí na roota. Když se pak chci vrátit na některý z předchozích serverů, zadávám několikrát exit. Místo psaní exit stačí použít kombinaci ctrl + d.



22: Změna mapování kláves v konzoli (praktický příklad: na num. klávesnici budeme místo tečky psát čárku) - pro linux
Moc toho o klávesových mapách nevím, potřeboval jsem jen rychle vyřešit přmapování jednoho znaku. Aby se na numerické klávesnici místo desetinné tečky psala čárka. Postup je snadný:

1) zjistit kód stisknuté klávesy, spustíme showkey a stiskneme požadovanou klávesu:
xjess:/home/pm # showkey
kb mode was UNICODE
[ if you are trying this under X, it might not work since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode 28 release
keycode 83 press
keycode 83 release
xjess:/home/pm #


kod 28 ignorujeme, to je klávesa enter stisknutá při spuštění programu, kód který nás zajímá je 83.

2) zjištění náhrady (v našem případě čárka):
na do slouží příkaz dumpkeys, vypíše tabulku kódů. Potřebujete "slovní vyjádření daného znaku". Čárka je anglicky comma. V tomto případě je to tedy jednoduché. Pokud ale nevíte slovní vyjádření, musíte si jej zjistit. Jde to třeba pomocí showkey, zmáčknutí příslušného znaku, když víte jeho kód, snadno si jej vyhledáte v tabulce dumpkeys

3) vlastní přemapování:
xjess:/home/pm # loadkeys << EOF
keycode 83 = comma
[stisknout ctrl + d]


A je to hotovo




23: Rychlé příhlašování pomocí ssh
Pokud se často přihlašujete pomocí ssh, nebaví Vás asi pořád psát ssh user@stroj.domena.cz. Je na to samozřejmě možné udělat skript, ale ssh proto má nástroj. Jmenuje se ssh_config. Stačí ho vytvořit v domovském adresáři uživatele v adresáři .ssh.

Pro každý stroj, ke kterému se chcete připojovat si stačí udělat záznam ve formátu:
Host zkracene_jmeno_serveru
parametr1 hodnota
parametr2 hodnota


Parametry platí pro daný server, až do dalšího návěští Host. Mnou používané parametry:
user - pod jakým uživatelem se hlásíme k danému serveru
protocol - jaoku verzí protokulu ssh se hlásit (2,1)
port - u některých serverů mi neposlouchá ssh na portu 22, ale na jiném

Je též možno použít zástupný znak *. Vyplatí se do soboru uvést Host * a do něj defaultní parametry pro všechny servery (komprese, timeouty, ...)

Potom už je možné se hlásit příkazem ssh zkracene_jmeno_serveru.

Nakonec malá ukázka:

Host nebe
    user    andel

Host peklo
    user    cert
    port    666
    compression     yes
    protocol    2
    

Host    *
    IdentityFile    ~/.ssh/id_dsa
    compression     no
    port            22
    ...
    ...


Pøi zadání ssh nebe se hlásíme jako uživatel andel, na portu 22, s vypnutou kompresí.

Přihlašovací a další údaje mohou tedy přijít ze tří zdrojù: přímo z příkazové řádky, ze souboru ssh_config z domovského adresáře uživatele nebo z /etc/sshd/ssh_config. Priorita je tak, jak jsou vypsány, příkazový řádek největší, soubor v etc nejmenší.
Související tip zde



24: SSH - autorizace klíčem
Pokud Vás při každém přihlašování nebaví zadávat heslo, je možné (a někdy i vhodné) autorizovat se klíčem. Situace ale není úplně jednoduchá, existuje více verzí protokolu ssh (v současné době se využívá verze 2, je více verzí sshd (openssh, SSH2 (commercial)), více druhů klíčů (rsa, dsa). Proto tento popis nemusí platit všude na 100%, záleží též na konfiguraci Vašeho sshd. V příkladech bude použit protokol verze 2, dsa klíče a ukážu kombinace mezi openssh a SSH2. Verzi Vašeho ssh serveru (sshd) zjistíte jednoduše:
root@mail ~ # telnet server 22
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SSH-1.99-OpenSSH_3.6.1


Ještě potřebujeme vědět verzi Vašeho ssh klienta (to se může u jednotlivých klientů lišit):
root@mail ~ # ssh -v
OpenSSH_3.8.1p1 FreeBSD-20040419, OpenSSL 0.9.7e 25 Oct 2004


Ještě pár poznámek - předpokládá se existence adresáře .ssh (případně .ssh2) v domovských adresářích (na klientu a na serveru) uživatele, kde chceme autorizaci používat. Práva k tomuto adresáři má mít jen daný uživatel a nikdo jiný. Jinak ssh může odmítat autorizovat klíčem. Do logu je pak zapsáno proč bylo spojení odmítnuto. Práva na adresář .ssh nebo .ssh2 mají být 700, soubory v nich potom 600.
Konfigurace ssh serveru musí mít povolenu autorizaci klíčem. Předpokládá se použití defaultních cest ke klíčům (např. u openSSH ~/.ssh/id_dsa), cesty jsou popsány v manuálových stránkách ssh a sshd.
Při přihlašování (openssh i ssh2) je často používaný parametr -i /cesta/ke/klici v případě, že klíč máme umístěn jinde. Když je cesta defaultní, není toto potřeba. Pokud se chceme ale přihlašovat ke každému serveru jiným klíčem, můžeme např. mít klíče nazvané server1, server2 a potom právě parametrem -i zvolit správný klíč.
Při generování klíče se program bude ptát na tzv. passphrase. Tu ponechte prázdnou. Její využití zmíním v dalším tipu. Vygeneruje se dvojice klíčů - privátní (nikomu ho neukazujte :-) a veřejný. Ten má příponu pub).

Práci s přihlašováním si lze ještě více usnadnit pomocí souboru .ssh/config. O tom pojednává jiný tip, je na něj odkazováno.
SSH2 používá adresář .ssh2, openssh .ssh. Dávejte si na to pozor.
U příkladů jsem pro rozlišení serverů zvolil označení "doma" a "práce". Jako uživatele používám "pm". Předpokládá se existence adresářů .ssh a .ssh2 s příslušnými právy.
V příkladu se uvádí: změníme práva na druhém stroji a je to předvedeno ssh přihlášením, změnou a odhlášením. Jde to taky udělat přímo z lokalního stroje, o tom pojednává tip "Příkaz vykonaný na vzdáleném stroji pomocí ssh"


OpenSSH klient (doma) -> OpenSSH server (práce)
DOMA:
Přepnout do adresáře .ssh, pokud neexistuje tak založit a nastavit práva:
cd /home/pm
mkdir .ssh
chmod 700 .ssh
cd .ssh

"doma" vygenerujeme dsa dvojici klíčů a uložíme je do tohoto adresáře:
ssh -keygen -t dsa

změníme práva
chmod 600 *

zkopírujeme veřejný klíč na server "práce" do souboru authorized_keys (předpokládá se existence adresáře .ssh):
scp /home/pm/.ssh/id_dsa.pub pm@prace:~/.ssh/verejny_klic

Přidáme klíč do souboru authorized_keys:
cat verejny_klic >> authorized_keys

Pak se na server "práce" přihlásíme a nastavíme správně práva:
ssh pm@prace

PRÁCE:
Změníme práva:
chmod 700 .ssh
chmod 600 .ssh/*


Když potom "doma" zadáte ssh pm@prace, proběhne autorizace klíčem.


openssh klient (doma) -> SSH2 server (práce)
DOMA:
Přepnout do adresáře .ssh, pokud neexistuje tak založit a nastavit práva:
cd /home/pm
mkdir .ssh
chmod 700 .ssh
cd /home/pm/.ssh

na klientovi vygenerujeme dvojici klíčů:
ssh-keygen -t dsa

zkonvertujeme klíč do podoby, kterou požaduje SSH2:
ssh-keygen -e -f id_dsa.pub > converted.pub

zkopírujeme zkonvertovaný klíč na server "práce" (předpokládá se existence adresáře .ssh2):
scp /home/pm/.ssh/converted.pub pm@prace:~/.ssh2/converted.pub

Přihlásíme se (ještě s heslem) do práce
ssh pm@prace

PRÁCE:
Na serveru "prace" pak v adresáři /home/pm/.ssh2 založíme soubor authorization a do něj napíšeme:
echo "Key converted.pub" >> authorization

A opět změníme práva na soubory i adresář .ssh2:
chmod 700 /home/pm/.ssh2
chmod 600 /home/pm/.ssh2/*


Když potom "doma" zadáte ssh pm@prace, proběhne autorizace klíčem.


SSH2 klient (doma) -> SSH2 server (prace)
DOMA:
Zde se pracuje s adresářem .ssh2, pokud není tak založíme:
cd /home/pm
mkdir .ssh2
chmod 700 .ssh2
cd .ssh2

Vygenerujeme dvojici klíčů
ssh-keygen -t dsa

"Doma" ještě založíme soubor identification a do něj zapíšeme informaci o klíči:
echo "IdKey id_dsa_1024_a" > identification

Nastavíme práva:
chmod 600 *

Zkopírujeme klíč do "prace" (.ssh2 v "praci" opet musi existovat):
scp id_dsa_1024_a.pub pm@prace:/home/pm/.ssh2/

Přihlásíme se do "prace"
ssh pm@prace

PRÁCE:
přepneme do adresáře .ssh2:
cd .ssh2

Do souboru authorization zapíšeme informaci o klíči:
echo "key id_dsa_1024_a.pub" >> authorization

a samozřejmě nastavíme práva:
chmod 600 *


Když potom "doma" zadáte ssh pm@prace, proběhne autorizace klíčem.


SSH2 klient (doma)-> OpenSSH server (prace)
DOMA:
pracujeme s adresarem .ssh2, když není tak založíme:
cd /home/pm
mkdir .ssh2
chmod 700 .ssh2
cd .ssh2

vygenerujeme klíče:
ssh-keygen -t dsa

Zapíšeme do souboru identification informaci o klíči:
echo "IdKey id_dsa_1024_a" > identification

Nastavíme práva:
chmod 600 *

Zkopírujeme klíč do "prace" (.ssh v "práci" opět musí existovat):
scp id_dsa_1024_a.pub pm@prace:/home/pm/.ssh/id_dsa_1024_a.pub

přihlásíme se do práce:
pm@prace

PRÁCE:
cd .ssh

Zkonverujeme zkopírovaný klíč do formátu, s kterým si rozumí openssh:
ssh-keygen -i -f id_dsa_1024_a.pub > converted_key.pub

Zapíšeme klíč do authorized_keys:
cat converted_key.pub >> authorized_keys

a opravíme práva:
chmod 600 *

Když potom "doma" zadáte ssh pm@prace, proběhne autorizace klíčem.





25: Portaudit (pro FreeBSD)
Portaudit je utilitka, která porovná verze portů, které máte na stroji nainstalované s databází ze serverů FreeBSD a oznámí Vám chyby a bepečnostní diry. Pokud nemáte rozběhané audity (viz. související tip), je nutné aktualizovat databázi ručně - na to má portaudit parametr. Jinak se o tom periodic.conf stará sám.
Instalace portauditu:
přihlásit se jako root
cd /usr/ports/security/portaudit
make install

Navíc po nainstalování portauditu se jeho výstup připojí k dennímu auditu (viz. související tip dole).



26: Pravidelné zasílání auditů a informací o systému (pro FreeBSD)
Mám moc rád tuto vlastnost. Nemusím se stále přihlašovat na servery, automaticky mi z nich chodí přehled co se děje. Jak toto zprovoznit je snadné:
cp /etc/defaults/periodic.conf /etc/
Auditů je více (denní, týdenní, ...). Každý zasílá trošku jiné informace. Ve vašem oblíbeném textovém editoru si pak upravte komu a který audit se bude posílat (standardně se posílá vše rootovi). Klidně můžete zvolit emailovou adresu nesouvisející se strojem (myslím ne lokální).



27: Pohodlné a bezpečné kopírování souborů mezi víse stroji pomocí ssh, scp
Pokud chcete bezpečně kopírovat soubory, jistě používáte scp (secure copy). Je to ale jen příkaz, je nutné si pamatovat parametry, nedoplní Vám cesty pro vzdálený server pomocí kl. tab, ... Když si ale pustíte midnight commander, tak pomocí klávesy F9 se dostanete do menu a je tam položka shell link. Přihlašování a ovládání je stejné jako u ftp (související odkaz dole). Do jednoho okna mc pak dostanete lokální stroj a do druhého vzdálený. Má to spoustu výhod - jsou vidět velikosti souborů, časy a datumy na obou stranách, je možné pohodlně měnit adresáře. Jde též využít dalšího typu pro zapamatování vzdáleného adresáře. Přihlašte si do jednoho okna vzdálený stroj a pak pomocí ctrl + pokračujte jako je uvedeno v druhém souvisejícím typu
Související tip zde
Související tip zde



28: Příkaz vykonaný na vzdáleném stroji pomocí ssh
Pokud chcete jen zjistit nebo provest nějakou drobnost na jiném stroji, většinou postupujete takto: přihlášení -> vzkonání příkazu -> odhlášení. Tuto operaci je možné urychlit takto: ssh uzivatel@stroj.domena.cz "prikaz". Dojde k přihlášení, příkaz se vykoná, zobrazí se jeho výstup a spojení se ukončí. Např: ssh pm@muj.server.cz "uname -a" . Toto Vám řekne, jak se vzdálený server jmenuje a co je zač.



29: FTP klient v midnight commanderu
Po stisku F9 v mc je i ftp klient. Přihlašování se provádí takto: uživatel@stroj.domena.cz. Heslo si mc nepamatuje. Co si ale pamatuje jsou již navštívené servery. Pokud si spustite tohot ftp klienta a zmáčknete ctrl + h, můžete si vybrat ze seznamu již navštívených serverů. Toto platí nejen pro ftp klienta ale i tzv. shell link.



30: Rychlá změna adresáře v midnight commanderu
Slouží k tomu kombinace ctrl + (zpětné lomítko). Po stisknutí se objeví okno s předvolenými cestami. Je možné na stisknutí dvou kláves přidat současný adresář. Cesty si můýete i pojmenovat. Konfigurační soubor k této vlastnosti najdete ve svém domovském adresáři v adresáři .mc. Struktura je jednoduchá, dá se snadno editovat.



31: Kopírování textu v midnight commanderu
Linuxový způsob kopírování je prima. Nevýhodu má ale třeba při editaci v midnight commanderu. Špatně se označuje a ještě hůře vkládá. Když ale při označování a vkládání myší držíte klávesu shift, kopíruje se tak jak se má.