Dodaj klucz prywatny na stałe za pomocą ssh-dodaj na Ubuntu

Mam klucz prywatny zabezpieczony hasłem dostępu do serwera przez SSH.

Mam 2 komputery z Linuksem (ubuntu 10.04) i zachowanie polecenia ssh-add jest INNE w obu.

W jednej maszynie, gdy użyję " ssh-add .SSH / identity " i wpisałem moje hasło, klucz został dodany na stałe, tzn. za każdym razem, gdy zamykam komputer i loguję się ponownie, klucz jest już dodany.

W drugim muszę dodawać klucz za każdym razem, gdy się loguję.

As far as I pamiętaj, zrobiłem to samo na obu. Jedyną różnicą jest to, że klucz został utworzony na tym, który jest dodawany na stałe.

Czy ktoś wie jak dodać go na stałe do drugiej maszyny?

Author: slicedtoad, 2010-08-12

13 answers

Rozwiązaniem byłoby wymusić, aby pliki kluczy były przechowywane na stałe, dodając je do pliku ~/.ssh/config:

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer 

Jeśli chcesz, aby wszyscy użytkownicy na komputerze używali klucza, umieść te linie w /etc/ssh/ssh_config, a klucz w folderze dostępnym dla wszystkich.

Dodatkowo, jeśli chcesz ustawić klucz specyficzny dla jednego hosta, możesz wykonać następujące czynności w swoim~/.ssh /config:

Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/githubKey

Musisz sklonować za pomocą @ github zamiast @github.com, ale ma to tę zaletę, że tylko ten klucz będzie spróbuj.

 485
Author: daminetreg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-19 05:45:21

To nie odpowiadało mi na ten sam problem pod Mac OS X Lion. Dodałem:

ssh-add ~/.ssh/id_rsa &>/dev/null

Do mojego .zshrc (but .profil też by się przydał), co chyba go naprawiło.

(zgodnie z sugestią tutaj: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )

 98
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-06 16:22:14

Rozwiązałem ten problem na Mac OSX (10.10) używając opcji-K dla ssh-add:

ssh-add -K ~/.ssh/your_private_key

Dla macOS 10.12 i nowszych musisz dodatkowo edytować konfigurację ssh zgodnie z opisem tutaj: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain

 88
Author: totas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-25 09:25:07

Po prostu dodaj brelok, jak wspomniano w Ubuntu Quick Tips https://help.ubuntu.com/community/QuickTips

Co

Zamiast ciągłego uruchamiania ssh-agent i SSH-add, możliwe jest użycie keychain do zarządzania kluczami ssh. Aby zainstalować keychain, możesz po prostu kliknąć tutaj, lub użyć Synaptic do wykonania zadania lub apt-get z linii poleceń.

Command line

Innym sposobem instalacji pliku jest otwarcie terminala (Zastosowanie - > Akcesoria - > Terminal) i typ:

sudo apt-get install keychain

Edytuj Plik

Następnie należy dodać następujące linie do ${HOME}/.bashrc lub / etc / bash.bashrc:

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh
 25
Author: Christian Saiki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-16 14:32:53

Próbowałem rozwiązania @ Aaron i to nie do końca działa dla mnie, ponieważ to ponownie dodać moje klucze za każdym razem, gdy otwieram nową kartę w moim terminalu. Więc trochę go zmodyfikowałem (zauważ, że większość moich kluczy jest również zabezpieczona hasłem, więc nie mogę po prostu wysłać wyjścia do /dev / null): {]}

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

Sprawdza wyjście ssh-add -l (które wyświetla listę wszystkich klawiszy, które zostały dodane) dla określonego klucza, a jeśli go nie znajdzie, dodaje go za pomocą ssh-add.

Teraz pierwszy raz Ja otwórz Mój terminal jestem pytany o hasła do moich kluczy prywatnych i nie jestem pytany ponownie, dopóki nie zrestartuję (lub wyloguję - nie sprawdziłem) mojego komputera.

Ponieważ mam kilka kluczy zapisuję wyjście ssh-add -l w zmiennej, aby poprawić wydajność (przynajmniej myślę, że poprawia wydajność :) )

PS: jestem na Linuksie i ten kod trafił do mojego pliku ~/.bashrc - Jeśli jesteś na Mac OS X, to zakładam, że powinieneś go dodać do .zshrc lub .profile

Edytuj: Jak zauważył @Aaron w komentarze, plik .zshrc jest używany z powłoki zsh - więc jeśli tego nie używasz (jeśli nie jesteś pewien, to najprawdopodobniej używasz bash), ten kod powinien trafić do Twojego pliku .bashrc.

 15
Author: Nikola Ivanov Nikolov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-28 21:00:53

W moim przypadku rozwiązaniem było:

Uprawnienia do pliku konfiguracyjnego powinny wynosić 600. chmod 600 config

Jak wspomniano w komentarzach powyżej przez generalopinion

Nie trzeba dotykać zawartości pliku konfiguracyjnego.

 11
Author: erezmta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-19 09:37:35

Na Ubuntu 14.04 (może wcześniej, może jeszcze) nie potrzebujesz nawet konsoli:

  • Uruchom seahorse lub uruchom to, co znajdziesz szukając "klucza"
  • Utwórz tam klucz SSH (lub zaimportuj)
    • nie trzeba zostawiać hasła pustego
    • Możesz nawet wcisnąć klucz publiczny na serwer (lub więcej).]}
  • skończysz z uruchomionym agentem ssh i tym kluczem załadowanym, ale zablokowanym
  • użycie ssh spowoduje odebranie tożsamości (tj. klucza) przez agenta
  • przy pierwszym użyciu podczas sesji hasło zostanie sprawdzone
    • i masz możliwość automatycznego odblokowania klucza po zalogowaniu
    • oznacza to, że login auth będzie używany do zawijania hasła klucza
  • uwaga: jeśli chcesz przekazać swoją tożsamość (tj. Agent-przekierowanie), wywołaj ssh z -A lub Ustaw jako domyślną
    • w przeciwnym razie nie można uwierzytelnić za pomocą tego klucza na komputerze, na którym się logujesz później do trzeciej maszyny
 3
Author: Robert Siemer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-06 19:36:53

Bardzo proste ^ _ ^ dwa kroki

1.yum install keychain

2.dodaj poniższy kod do .bash_profile

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
 3
Author: LawrenceLi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-03 11:45:59

Dodanie następujących linii w"~/.bashrc " rozwiązał problem dla mnie. Używam pulpitu Ubuntu 14.04.

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"
 2
Author: reynoldpj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 15:55:48

To mi pomogło.

ssh-agent /bin/sh
ssh-add /path/to/your/key
 2
Author: Jaseem Abbas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-02 06:47:40

Uruchamiam Ubuntu używając dwóch kluczy id_rsa. (jeden osobisty do pracy). ssh-add zapamięta jeden klucz (osobisty) i za każdym razem zapomni o firmie.

Sprawdzając różnicę między tymi dwoma widziałem, że mój klucz osobisty miał 400 praw, podczas gdy jeden z firm miał 600 praw. (miał u + w). Usunięcie zapisu użytkownika bezpośrednio z klucza firmy (u-w lub ustawiony na 400) naprawił mój problem. ssh-add zapamiętuje teraz oba klucze.

 1
Author: Fholst,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-24 22:12:39

Dla tych, którzy używają Fish shell, możesz użyć poniższej funkcji, a następnie wywołać ją w~/.config / fish/config.ryba. Wczytuje wszystkie klucze zaczynające się od id_rsa do ssh-agent.

# Load all ssh keys that start with "id_rsa"
function loadsshkeys
  set added_keys (ssh-add -l)
   for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
    if test ! (echo $added_keys | grep -o -e $key)
      ssh-add "$key"
    end
  end
end

# Call the function to run it.
loadsshkeys

Jeśli chcesz uruchomić ssh-agent automatycznie po otwarciu terminala, możesz użyć tuvistavie/Fish-ssh-agent, aby to zrobić.

 1
Author: frederickjh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-30 15:12:01

Miałem ten sam problem na Ubuntu 16.04: niektóre klucze zostały dodane na stałe, dla innych musiałem wykonywać ssh-add Na każdej sesji. Dowiedziałem się, że klucze, które zostały dodane na stałe, miały zarówno klucz prywatny, jak i publiczny znajdujący się w ~/.ssh, a klucze, które zostały zapomniane podczas każdej sesji, miały tylko klucze prywatne w katalogu ~/.ssh. Rozwiązanie jest więc proste: należy skopiować zarówno klucz prywatny jak i publiczny do ~/.ssh przed wykonaniem ssh-add.

 0
Author: NShiny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-10 15:29:29