Wszystko, co musisz zrobić, to wygenerować parę kluczy prywatnych / publicznych na komputerze, skopiować klucz publiczny na serwer, a następnie połączyć się. Można to zrobić, uruchamiając ssh-keygen -t rsa
na twojej lokalnej maszynie. Wynik będzie podobny do poniższego:
td512@kettecomp2:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/td512/.ssh/id_rsa):
Created directory '/home/td512/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/td512/.ssh/id_rsa.
Your public key has been saved in /home/td512/.ssh/id_rsa.pub.
The key fingerprint is:
f9:cd:fe:c1:77:90:40:34:9c:34:cb:f6:2c:cc:32:6a td512@kettecomp2
The key's randomart image is:
+--[ RSA 2048]----+
| +*. |
| oo+ |
| = |
| . + + . |
| S o + = |
| o = o . |
| E . o o o|
| . . o.|
| ... |
+-----------------+
td512@kettecomp2:~$
Następnie musisz skopiować klucz publiczny na serwer. Moim ulubionym sposobem jest otwarcie klucza publicznego ssh w textedit i skopiowanie go. Klucz można znaleźć pod adresem ~/.ssh/id_rsa.pub
gdzie ~
oznacza twój katalog domowy.
Po skopiowaniu do schowka ssh na serwer i uruchom to polecenie (uwaga, aby nie kopiować + wklejać, ponieważ masz już klucz publiczny w schowku):
cd && mkdir .ssh && chmod 700 .ssh && touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys && nano .ssh/autorized_keys
Powyższy kod utworzy wymagany katalog i plik, a następnie sprawi, że będą miały odpowiednie uprawnienia. po czym powinieneś nano
otwarty. Wklej klucz publiczny, naciśnij Ctrl + X powiedz tak przy monitach, a następnie wyloguj się z ssh.
Następna część to implementacja kodu. Można to zrobić w ten sposób:
diff foo <(ssh myServer -l user -i .ssh/id_rsa 'cat foo')
gdzie user
to twoja nazwa użytkownika dla serwera i .ssh/id_rsa
to twój klucz prywatny. Powinno to zatrzymać wyświetlanie monitów o hasło.
[email protected]'s password:
metoda klucza SSH oznacza brak pytania o hasło, ponieważ serwer + klient negocjuje automatycznieTą drogą
diff
polecenie nie pobiera danych wejściowych zamiastssh
jeśli to jest problem.źródło