Il user@host:path/to/repo
formato dice a Git di usare ssh per accedere host
con username user
. Da git help clone
:
Una sintassi alternativa simile a scp può anche essere usata con il protocollo ssh:
[user@]host.xz:path/to/repo.git/
La parte prima del @
è il nome utente e il metodo di autenticazione (password, chiave pubblica, ecc.) È determinato da ssh, non da Git. Git non ha modo di passare una password a ssh, perché ssh potrebbe anche non utilizzare una password a seconda della configurazione del server remoto.
Uso ssh-agent
per evitare di digitare password in qualsiasi momento
Se non si desidera digitare sempre la password ssh, la soluzione tipica è generare una coppia di chiavi pubblica / privata , inserire la chiave pubblica nel ~/.ssh/authorized_keys
file sul server remoto e caricare la chiave privata in ssh-agent
. Vedi anche Configurare Git su SSH per effettuare il login una volta , la pagina di aiuto di GitHub sulle passphrase di chiavi ssh , la documentazione ssh di gitolite e la documentazione delle chiavi ssh di Heroku .
Scegliere tra più account su GitHub (o Heroku o ...)
Se hai più account in un posto come GitHub o Heroku, avrai più chiavi ssh (almeno uno per account). Per selezionare l'account con cui si desidera accedere, è necessario indicare a ssh quale chiave privata utilizzare .
Ad esempio, supponiamo di avere due account GitHub: foo
e bar
. La tua chiave ssh per foo
è ~/.ssh/foo_github_id
e la tua chiave ssh per bar
è ~/.ssh/bar_github_id
. Vuoi accedere git@github.com:foo/foo.git
con il tuo foo
account e git@github.com:bar/bar.git
con il tuo bar
account. Aggiungeresti quanto segue al tuo ~/.ssh/config
:
Host gh-foo
Hostname github.com
User git
IdentityFile ~/.ssh/foo_github_id
Host gh-bar
Hostname github.com
User git
IdentityFile ~/.ssh/bar_github_id
Quindi clonerai i due repository come segue:
git clone gh-foo:foo/foo.git # logs in with account foo
git clone gh-bar:bar/bar.git # logs in with account bar
Evitare del tutto ssh
Alcuni servizi forniscono l'accesso HTTP in alternativa a ssh:
GitHub:
https://username:password@github.com/username/repository.git
Gitorious:
https://username:password@gitorious.org/project/repository.git
Heroku: vedi questo articolo di supporto .
ATTENZIONE : l'aggiunta della password all'URL del clone farà sì che Git memorizzi la password in chiaro .git/config
. Per archiviare in modo sicuro la password quando si utilizza HTTP, utilizzare un supporto credenziali. Per esempio:
git config --global credential.helper cache
git config --global credential.https://github.com.username foo
git clone https://github.com/foo/repository.git
Quanto sopra farà sì che Git richieda la password una volta ogni 15 minuti (per impostazione predefinita). Vederegit help credentials
per i dettagli.