wlado's website

OpenBSD - klíče/keys

Po mnoha letech jsem se rozhodl vyzkoušet další level zabezpečení přístupu k serverům a to asymetrický klíč místo hesla.
Klientská stanice MacBook s MacOS X 10.6.8

1) Teorie
---------

Asymetrické šifrování používá dva různé klíče.
a) privátní (tajný) klíč
b) veřejný klíč

Veřejný klíč šifruje obyčejný text a privátní klíč dešifruje zašifrovaný text.

2) Kdo generuje klíče?
----------------------
Klíč si generuje uživatel sám.
Klíč nesdílí s ostatními uživateli.
Každý uživatel má svůj vlastní pár klíčů.
Uživatel může použít (jeden) vlastní pár klíčů na více zařízení.

3) Kde se generují klíče?
-------------------------
Klíče se generují na klientské stanici, privátní si nechá uživatel a veřejný uloží na server, kam se chce přihlásit.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): /Users/user/.ssh/id_rsa/user_rsa_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/user/.ssh/id_rsa/user_rsa_key.
Your public key has been saved in /Users/user/.ssh/id_rsa/user_rsa_key.pub.
The key fingerprint is:
aa:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:ee user@MacBook.local
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| o |
| = +S |
| + =.+ |
| . =.o + |
| ..+..+ * . |
| .+o=oE. + |
+-----------------+
$

poznámky:

a) -t rsa -- znamená typ šifrovacího klíče, použito starší RSA šifrování
b) passphrase -- heslo ke klíči
c) Enter file in which to save the key (/Users/user/.ssh/id_rsa): -- v závorce je pouze příklad
Klíče jsou vygenerovány do aktuálního adresáře (working directory) nebo
klíče jsou generovány do adresáře napsaného za dvoutečkou -- /Users/username/.ssh/test_klic

4) přesun veřejného klíče na server
-----------------------------------

Veřejný klíč na serveru potvrzuje identitu uživatele, který se přihlašuje z klientské stanice

- klíč pro běžného uřivatele je úmístěn (BSD):
- klíč pro uživatele root je umístěn (BSD): /root/.ssh/authorized_keys

Na macOS X 10.6.8 není program ssh-copy-id:

$ ssh-copy-id -i .ssh/id_rsa/user_rsa_key.pub user@1.0.0.x
-bash: ssh-copy-id: command not found
$

takže ručně je nutné vybrat obsah souboru s klíčem - obyčejný text a vložit ho do souboru na strabně serveru.

$ scp .ssh/id_rsa/user_rsa_key.pub root@1.x.x.x:/root/.ssh
root@1.x.x.x’s password:
user_rsa_key.pub 100% 404 0.4KB/s 00:00
$

$ ssh root@1.x.x.x
root@1.x.x.x’s password:
# cat .ssh/user_rsa_key.pub >> .ssh/authorized_keys
#

poznámky:

cat zkopíruje obsah (text) souboru user_rsa_key.pub a přidá ho na konec souboru authorized_keys

5) připojení se na server
-------------------------

$ ssh -i id_rsa/user_rsa_key root@1.x.x.x
Identity added: id_rsa/user_rsa_key (id_rsa/user_rsa_key)

--- zepta se poprve na heslo ke klíči

#


Pro zjednodušení vytvořit záznam o klíči

$ nano ~/.ssh/config

Host 1.x.x.x
User user_on_remote_host
Hostname 1.x.x.x -- nebo www.domena.cz
IdentityFile /Users/user/.ssh/id_rsa/user_rsa_key

pak staci napsat

$ ssh 1.x.x.x

Welcome to OpenBSD: The proactively secure Unix-like operating system.

#

6) Zrušení hesla
----------------

# nano /etc/ssh/sshd_config

#PasswordAuthentication yes
-- změnit na
PasswordAuthentication no

# /etc/rc.d/sshd restart
sshd(ok)
sshd(ok)
#