Uruchamianie agenta SSH podczas uruchamiania Git Bash w systemie Windows


Używam git bash. Muszę użyć
eval `ssh-agent.exe`
ssh-add/my/ssh/location/

za każdym razem, gdy zaczynam nowy git bash.
Czy istnieje sposób, aby zainstalować agenta ssh na stałe? A może okna mają ładny sposób
zarządzać kluczami SSH?
Jestem początkującym, proszę o szczegółowy tutorial, dzięki!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W sesji git bash możesz dodać skrypt do
~/.profile
lub
~/.bashrc
(

z
~
zwykle ustawia się na
% USERPROFILE%
https://stackoverflow.com/a/3455231/6309 ), aby określona sesja automatycznie uruchamiała
ssh-agent
. Jeśli plik nie istnieje, po prostu go utwórz.
To właśnie opisuje GitHub w sekcji „

Praca z hasłami klucza SSH
https://help.github.com/articl ... rases
zwroty ".
W sekcji "

automatyczne uruchamianie agenta ssh w Git dla Windows
https://help.github.com/articl ... ndows
„Ten artykuł zawiera solidny skrypt, który sprawdza, czy agent jest uruchomiony, czy nie. Poniżej znajduje się tylko fragment kodu. Pełne rozwiązanie można znaleźć w artykule GitHub.
<pre class="lang-sh prettyprint-override">
# This is just a snippet. See the article above.
if ! agent_is_running; then
agent_start
ssh-add
elif ! agent_has_keys; then
ssh-add
fi

Inne zasoby:
"

Pobranie agenta ssh do pracy z git run z poziomu powłoki poleceń systemu Windows
https://stackoverflow.com/a/15870387/6309
„ma podobny scenariusz, ale przede wszystkim odniosę się do powyższego artykułu GitHub, który jest bardziej wiarygodny i aktualny.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

P.S: Te instrukcje są w kontekście powłoki Bash otwartej w podsystemie Windows 10 Linux i nie wspominają o symetrycznych powiązaniach kluczy SSH generowanych w systemie Windows z Bash w systemie Ubuntu w systemie Windows

1) zaktualizuj

.bashrc

dodając do niego następujące elementy
# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"function start_agent {
echo "Initializing new SSH agent..."
touch $SSH_ENV
chmod 600 "${SSH_ENV}"
/usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
. "${SSH_ENV}" >/dev/null
/usr/bin/ssh-add
}# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" >/dev/null
kill -0 $SSH_AGENT_PID 2>/dev/null || {
start_agent
}
else
start_agent
fi

2), a następnie uruchom
$ source ~/.bashrc
, aby ponownie załadować konfigurację.
Powyższe kroki zostały wykonane z

https://github.com/abergs/ubun ... aunch
https://github.com/abergs/ubun ... aunch
3) Utwórz plik konfiguracyjny SSH, jeśli go brakuje. Użyj następującego polecenia, aby utworzyć nowy:
.ssh $ touch config
4) Dodaj do
~/.ssh/config
Host github.com-<YOUR_GITHUB_USERNAME> 
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes<More hosts and github configs can be added in similar manner mentioned above>

5) Dodaj swój klucz do agenta SSH za pomocą
$ ssh-add ~/.ssh/id_work_gmail
, a następnie możesz połączyć się ze swoim kontem github lub zdalnym hostem za pomocą ssh. Na przykład w kontekście powyższych przykładów kodu:
$ ssh github.com-<YOUR_GITHUB_USERNAME>

lub
$ ssh <USER>@csexperimental.abc.com


To dodanie klucza do agenta SSH należy wykonać tylko raz.

6) Teraz wyloguj się z sesji Bash w podsystemie Windows Linux, tj. Wyloguj się ponownie ze wszystkich konsol Bash, ponownie uruchom nową konsolę i spróbuj SSH do hosta Github lub innego hosta skonfigurowanego w pliku konfiguracyjnym SSH i powinno działać bez wszelkie dodatkowe kroki.
Uwaga:

Podziękować.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Odkryłem, że najłatwiejszym sposobem osiągnięcia tego jest użycie Pageant jako agenta SSH i plink.
Musisz ustawić sesję putty dla nazwy hosta używanej na pilocie.
Będziesz także potrzebował pliku plink.exe, który można pobrać z tej samej strony, co kit.
I potrzebujesz, aby konkurs odbywał się za pomocą przesłanego klucza. Mam skrót do konkursu w folderze startowym, który ładuje mój klucz SSH podczas logowania.
Kiedy instalujesz git-scm, możesz określić, że użyje on żółwia/plink, a nie OpenSSH.
Efektem netto jest to, że możesz otworzyć git-bash, kiedy tylko chcesz i push/pull bez konieczności wpisywania haseł.
To samo dotyczy sesji putty i WinSCP, gdy korowód ładuje twój klucz. Dzięki temu życie jest znacznie łatwiejsze (i bezpieczniejsze).
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ponieważ nie lubię używać szpachli w systemie Windows jako obejścia, stworzyłem bardzo proste narzędzie

ssh-agent-wrapper
https://github.com/erezak/ssh- ... es... Skanuje foldery .ssh i dodaje wszystkie klucze do agenta. Wystarczy umieścić go w folderze startowym systemu Windows, aby działał.

Założenia

:
  • ssh agent w tranzycie
  • shh-add in path (obie opcje wybierając opcję "RED" podczas instalacji git
  • klucze prywatne znajdują się w folderze% USERPROFILE%/. ssh
  • nazwy kluczy prywatnych zaczynają się od id (np. id_rsa)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie mogłem zmusić tego do pracy w oparciu o najlepszą odpowiedź, prawdopodobnie dlatego, że jestem takim noobem z komputera i brakuje mi czegoś oczywistego. Ale tylko do Twojej wiadomości na wypadek, gdyby pomogło to komuś tak podstępnemu jak ja, to, co KOŃCOWO wykonało pracę, zostało zrobione przez jeden z linków

tutaj
https://help.github.com/en/git ... ndows
(wymienione w odpowiedziach). Wymagało to po prostu wklejenia następującego kodu do mojego
.bash_profile
:
env=~/.ssh/agent.envagent_load_env () { test -f "$env" && . "$env" >|/dev/null ; }agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >|/dev/null ; }agent_load_env# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >|/dev/null 2>&1; echo $?)if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fiunset env

Prawdopodobnie skonfigurowałem coś dziwnego, ale nie powiodło się, gdy dodałem to do mojego
.profile
lub
.bashrc
. Innym prawdziwym problemem, z którym się zmagam, jest to, że nie jestem administratorem tego komputera i nie mogę zmieniać zmiennych środowiskowych bez uzyskania zgody IT, więc jest to rozwiązanie dla tych, którzy nie mają do niego dostępu.
Wiesz, że to działa, jeśli zostaniesz poproszony o podanie hasła ssh podczas otwierania git bash. Alleluja, w końcu coś zadziałało.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Umieść to w swoim ~/.bashrc (lub pliku z niego pochodzącym), co zatrzyma jego wielokrotne uruchamianie bez potrzeby posiadania powłoki:
if [ -z "$SSH_AGENT_PID" ]; then
eval `ssh-agent -s`
fi

Następnie dodaj „AddKeysToAgent yes” do ~/.ssh/config:
Host *
AddKeysToAgent yes

ssh na twój serwer (lub git pull), a zostaniesz poproszony o hasło/hasło tylko raz na sesję.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Utwórz nowy plik .bashrc w swoim katalogu ~.
Tam możesz umieścić swoje polecenia, które chcesz wykonać za każdym razem, gdy uruchamiasz bash
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:


Proste rozwiązanie dwuliniowe

z

ta odpowiedź
https://stackoverflow.com/a/46736965/2969544
:
Dla

sh

, bash

i

itp .:
<pre class="lang-sh prettyprint-override">
# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi. ~/.ssh-agent.sh

Dla

csh

,

tcsh

itp:
<pre class="lang-sh prettyprint-override">
# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się