Chcę używać wielu kluczy prywatnych do łączenia się z różnymi serwerami lub różnymi częściami tego samego serwera (moje zastosowania to administracja systemem serwera, administracja Git i normalne użycie Git na tym samym serwerze). Próbowałem po prostu ułożyć klucze w id_rsa
plikach bezskutecznie.
Najwyraźniej najprostszym sposobem na zrobienie tego jest użycie polecenia
ssh -i <key location> [email protected]
To dość kłopotliwe.
Wszelkie sugestie, jak zrobić to trochę łatwiej?
Odpowiedzi:
Od mojego
.ssh/config
:I tak dalej.
źródło
IdentityFile
wpisów dla tego samegoHost
, które są następnie sprawdzane w kolejności podczas łączenia.IdentitiesOnly yes
do zapobiegania ~ / .ssh / id_rsa lub innym tożsamościom. (To była pierwotnie edycja)Możesz poinstruować ssh, aby spróbował wielu kluczy po kolei podczas łączenia. Oto jak:
W ten sposób nie musisz określać, który klucz działa z którym serwerem. Użyje tylko pierwszego działającego klucza.
Można również wprowadzić hasło tylko wtedy, gdy dany serwer jest skłonny zaakceptować klucz. Jak widać powyżej ssh nie próbował poprosić o hasło,
.ssh/id_rsa
nawet jeśli je posiadało.Na pewno nie wyprzedza konfiguracji na serwer jak w innych odpowiedziach, ale przynajmniej nie będziesz musiał dodawać konfiguracji dla wszystkich serwerów, z którymi się łączysz!
źródło
Odpowiedź od Randal Schwartz prawie pomógł mi przez całą drogę. Mam inną nazwę użytkownika na serwerze, więc musiałem dodać słowo kluczowe User do mojego pliku:
Teraz możesz połączyć się, używając przyjaznej nazwy:
Więcej słów kluczowych można znaleźć na stronie podręcznika OpenSSH . UWAGA: Niektóre z wymienionych słów kluczowych mogą już być obecne w pliku / etc / ssh / ssh_config .
źródło
Poprzednie odpowiedzi poprawnie wyjaśniły sposób utworzenia pliku konfiguracyjnego do zarządzania wieloma kluczami ssh. Myślę, że ważną rzeczą, którą również należy wyjaśnić, jest zastąpienie nazwy hosta nazwą aliasu podczas klonowania repozytorium .
Załóżmy, że nazwa użytkownika konta GitHub Twojej firmy to abc1234 . Załóżmy, że nazwa twojego osobistego konta GitHub to jack1234
Załóżmy, że utworzono dwa klucze RSA, a mianowicie id_rsa_company i id_rsa_personal . Twój plik konfiguracyjny będzie wyglądał jak poniżej:
Teraz, gdy klonujesz repozytorium (o nazwie demo) z firmowego konta GitHub, adres URL repozytorium będzie podobny do:
Teraz robiąc to
git clone
, powinieneś zmodyfikować powyższy adres URL repozytorium jako:Zauważ, jak github.com jest teraz zamieniany na alias „firma”, jak zdefiniowaliśmy w pliku konfiguracyjnym.
Podobnie musisz zmodyfikować sklonowany adres URL repozytorium na koncie osobistym w zależności od aliasu podanego w pliku konfiguracyjnym.
źródło
Pamiętaj, aby go przetestować przed dodaniem za pomocą:
Jeśli masz jakieś problemy z błędami, czasami zmiana bezpieczeństwa pliku pomaga:
źródło
Wygeneruj klucz SSH:
Generuj
another SSH key
:Teraz w katalogu powinny znajdować się dwa klucze publiczne ( id_rsa.pub , accountB.pub )
~/.ssh/
.Utwórz plik konfiguracyjny
~/.ssh/config
o następującej treści:Klonuj z
default
konta.Klonuj z
accountB
konta.Zobacz więcej tutaj
źródło
Zgodziłbym się z Tuomasem na temat korzystania z ssh-agent. Chciałem również dodać drugi klucz prywatny do pracy i ten samouczek działał dla mnie jak urok.
Kroki są jak poniżej:
$ ssh-agent bash
$ ssh-add /path.to/private/key
na przykładssh-add ~/.ssh/id_rsa
$ ssh-add -l
$ssh -v <host url>
npssh -v [email protected]
źródło
ssh-agent
przez lata, ja niedawno włączony do korzystania gnomagnome-keyring
w moimi3
WM. Powód jest prosty: menedżer kluczy Gnome automagicznie obsługuje dodawanie i usuwanie kluczy ssh bez konieczności pamiętania o tymssh-add
. Ponadto zapewniam jedno hasło do ich odblokowania (i dla określonego czasu przekroczenia limitu czasu). Do każdej jego własności. Ponieważ używam ustawień gnome w Arch, było to plug and play z moją konfiguracją. Jeśli jesteś anty-gnomem, zignoruj ten komentarz.Natrafiłem na ten problem jakiś czas temu, kiedy miałem dwa konta Bitbucket i chciałem przechowywać osobne klucze SSH dla obu. To działało dla mnie.
Utworzyłem dwie osobne konfiguracje ssh w następujący sposób.
Teraz, gdy musiałem sklonować repozytorium z mojego konta służbowego - polecenie było następujące.
Musiałem zmodyfikować to polecenie, aby:
Podobnie polecenie klonowania z mojego konta osobistego musiało zostać zmienione na
Zobacz ten link, aby uzyskać więcej informacji.
źródło
Użyj ssh-agent dla swoich kluczy.
źródło
Teraz, dzięki najnowszej wersji git, możemy określić sshCommand w specyficznym dla repozytorium pliku konfiguracyjnym git.
źródło
WAŻNE: Musisz uruchomić ssh-agent
Musisz uruchomić ssh-agent (jeśli jeszcze nie działa) przed użyciem ssh-add w następujący sposób:
Zauważ, że polecenie eval uruchamia agenta w GIT bash w systemie Windows. Inne środowiska mogą użyć wariantu do uruchomienia agenta SSH.
źródło
Możesz utworzyć plik konfiguracyjny o nazwie
config
w swoim~/.ssh
folderze. Może zawierać:Umożliwi to połączenie się z takimi maszynami
źródło
Na Ubuntu 18.04 nie ma nic do roboty.
Po pomyślnym utworzeniu drugiego klucza ssh system spróbuje znaleźć pasujący klucz ssh dla każdego połączenia.
Żeby było jasne, możesz utworzyć nowy klucz za pomocą tych poleceń
źródło
Wiele par kluczy w GITHUB
1.0 PLIK KONFIGURACJI SSH
1.1 UTWÓRZ ~ / .ssh / config
1.2 chmod 600 ~ / .ssh / config (MUST)
1.3 wprowadź następujące dane do pliku:
Przypadek A: FRESH NEW GIT CLONE
użyj tego polecenia, aby git clone:
$ git clone git @ pizza: twojgitusername / pizzahut_repo.git
Uwaga: Jeśli chcesz w przyszłości zmienić nazwę hosta „pizza” .ssh / config, przejdź do sklonowanego folderu git, edytuj wiersz adresu URL pliku .git / config (patrz przypadek B)
Przypadek B: JUŻ FOLDER GIT CLONE
2.1 przejdź do sklonowanego folderu, a następnie przejdź do folderu .git
2.2 edycja pliku konfiguracyjnego
2.3 zaktualizuj adres URL ze starego na nowy:
źródło
dla mnie jedynym działającym rozwiązaniem było po prostu dodanie
~/.ssh/config
your_ssh_key
jest bez żadnego rozszerzenia, nie używaj.pub
źródło
Na Centos 6.5 z OpenSSH_5.3p1, OpenSSL 1.0.1e-fips rozwiązałem problem, zmieniając nazwę moich plików kluczy, aby żaden z nich nie miał domyślnej nazwy. Mój katalog .ssh zawiera id_rsa_foo i id_rsa_bar, ale nie ma id_rsa itp.
źródło
Jak wspomniano na stronie blogu atlassian, wygeneruj konfigurację w .ssh zawierającą następujący tekst:
Następnie możesz po prostu przejść do kasy z domeną sufiksów, aw ramach projektów możesz lokalnie skonfigurować nazwy autorów itp.
źródło
Możesz wypróbować ten pakiet sshmulti npm do obsługi wielu kluczy ssh.
źródło
Oto rozwiązanie, którego użyłem inspirowane odpowiedzią @ sajib-khan. Domyślna konfiguracja nie jest ustawiona, to moje osobiste konto na gitlab, a inne określone to moje konto firmowe. Oto co zrobiłem:
Wygeneruj klucz ssh
ssh-keygen -t rsa -f ~/.ssh/company -C "[email protected]"
Edytuj konfigurację ssh
nano ~/.ssh/config
Usuń buforowane klucze ssh
ssh-add -D
Sprawdź to !
ssh -T [email protected]
ssh -T [email protected]
Użyj tego !
Konto firmowe
$ git clone [email protected]:group/project.git
Konto osobiste / domyślne
$ git clone [email protected]:username/project.git
Oto źródło , którego użyłem, mam nadzieję, że to pomoże!
źródło
Podoba mi się podejście do ustawiania następujących parametrów w ~ / .ssh / config:
Następnie w repozytorium możesz utworzyć
.env
plik zawierający polecenie ssh, które będzie używane:Jeśli następnie użyjesz np. Dotenv, środowisko var jest eksportowane automatycznie, a whoop whoop możesz określić klucz, który chcesz dla projektu / katalogu. Hasło jest proszone tylko raz, ponieważ jest dodawane do pęku kluczy.
To rozwiązanie działa idealnie z git i jest przeznaczone do pracy na komputerze Mac (z powodu
UseKeychain
).źródło