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)
#
TOP