Il user@host:path/to/repoformato dice a Git di usare ssh per accedere hostcon 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_keysfile 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: fooe bar. La tua chiave ssh per fooè ~/.ssh/foo_github_ide la tua chiave ssh per barè ~/.ssh/bar_github_id. Vuoi accedere git@github.com:foo/foo.gitcon il tuo fooaccount e git@github.com:bar/bar.gitcon il tuo baraccount. 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.