Mam dwa serwery. Oba serwery są w CentOS 5.6. Chcę SSH z serwera 1 na serwer 2 za pomocą klucza prywatnego, który mam (klucz prywatny OpenSSH SSH-2).
Nie wiem jak to zrobić na Uniksie. Ale to, co zrobiłem w systemie Windows za pomocą Putty, to nakarmienie mojego klucza prywatnego OpenSSH do putty-gen i wygenerowanie klucza prywatnego w formacie PPK.
Jednak tworzyłbym skrypt bash z serwera 1, który wykona niektóre polecenia na serwerze 2 za pośrednictwem SSH.
Jak połączyć SSH z serwerem 2 za pomocą mojego pliku klucza prywatnego z serwera 1?
ssh-copy-id user@machine
Odpowiedzi:
Potrzebujesz klucza publicznego SSH i klucza prywatnego ssh. Klucze można generować za pomocą
ssh_keygen
. Klucz prywatny musi być przechowywany na serwerze 1, a klucz publiczny musi być przechowywany na serwerze 2.Jest to całkowicie opisane na stronie manuala openssh, więc zacytuję go dużo. Powinieneś przeczytać sekcję „Uwierzytelnianie”. Bardzo pomocny powinien być również podręcznik openSSH: http://www.openssh.org/manual.html
Uważaj na ssh, ponieważ wpływa to na bezpieczeństwo twojego serwera.
Od
man ssh
:Oznacza to, że możesz przechowywać swój klucz prywatny w katalogu domowym w .ssh. Inną możliwością jest poinformowanie ssh za pomocą
-i
przełącznika parametrów, aby używał specjalnego pliku tożsamości. Również zman ssh
:To jest dla klucza prywatnego. Teraz musisz wprowadzić swój klucz publiczny na serwerze 2. Ponownie cytat z
man ssh
:Najłatwiejszym sposobem na osiągnięcie tego jest skopiowanie pliku na Serwer 2 i dołączenie go do pliku uprawnione_ klucze:
Autoryzacja za pomocą klucza publicznego musi być dozwolona dla demona ssh, patrz
man ssh_config
. Zwykle można to zrobić, dodając następującą instrukcję do pliku konfiguracyjnego:źródło
ssh -i keyfile
dzięki!ssh-copy-id
:ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com
.ssh-add
po utworzeniu klucza na komputerze, z którego się łączysz. to powoduje ból głowy u większości ludzi.$ ssh -i ~/.ssh/id_rsa [email protected]
się błąd.[email protected]: Permission denied (publickey).
Mam klucz utworzony, dodany lokalnie za pomocąssh-add
i dodany jako autoryzowany klucz na zdalnym serwerze.Użyłem ssh z opcją -i, aby dodać swój klucz tutaj.
Jeśli chcesz przekazać arg1, arg2 z plikiem .sh, po prostu przekaż go po pliku .sh i użyj spacji, aby go rozdzielić.
ssh -i home/avr/new.pem [email protected] "/var/www/beta/betatolive.sh mmin 30"
źródło
chmod 600 home/avr/new.pem
Pierwszą rzeczą, którą musisz zrobić, to upewnić się, że uruchomiłeś polecenie keygen, aby wygenerować klucze:
Następnie użyj tego polecenia, aby przekazać klucz do zdalnego serwera, modyfikując go tak, aby pasował do nazwy twojego serwera.
źródło
ssh-copy-id user@hostname
zamiastDołącz klucz publiczny (
id_[rd]sa.pub
) dla komputera źródłowego (z którego korzystasz~/.ssh/authorized_keys
ssh ) do pliku serwera docelowego dla nazwy użytkownika, na którą chcesz ssh. Jeśli zgubiłeś klucz publiczny, będziesz chciał utworzyć nowy za pomocąssh-keygen
. Użycie domyślnych argumentów w tym celu powinno być w większości przypadków odpowiednie. Jeśli potrzebujesz bardziej szczegółowych instrukcji, w Google możesz znaleźć tysiące samouczków.źródło
Użyj
ssh-copy-id
na serwerze 1, zakładając, że masz parę kluczy (wygenerowanych zssh-keygen
):Teraz powinieneś mieć możliwość ssh do serwera 2 z ssh za pomocą klucza prywatnego
Rzeczywiście, jeśli sprawdzisz
cat ~/.ssh/authorized_keys
na serwerze 2, zobaczysz, że klucz publiczny jest do ciebie dołączony.źródło