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.
- privátní (tajný) klíč
- 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:
- -t rsa -- znamená typ šifrovacího klíče, použito starší RSA šifrování
- passphrase -- heslo ke klíči
- 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)
#