1 votes

Pourquoi le clone ssh d'un repo gitlab nécessite-t-il le mot de passe de WSL mais pas celui d'un PC natif de Linux ?

Depuis un bureau Linux, je suis capable de cloner un projet depuis notre dépôt gitlab comme ceci :

git clone git@git.company.com:namespace/project.git

Pas de problème avec ce qui précède : en particulier, on ne me demande pas la git@git.company.com mot de passe.

J'ai dû passer au sous-système Windows 10 pour Linux (WSL) ; lorsque j'essaie de cloner le même projet, je Je suis demandé pour le git@git.company.com mot de passe, que je n'ai pas.

Question : Pourquoi suis-je invité à saisir le mot de passe dans un environnement mais pas dans l'autre ?


Ce que j'ai essayé :
1. Comme j'avais des clés ssh dans l'environnement natif de Linux, je les ai créées dans WSL :

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:16ba121a04d5ad3b885f09af5+c6c08b68766ce43d9 user@JFNM38J2
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+
  1. En raison d'une réponse à cette question J'ai démarré sshd en WSL :

    $ sudo /etc/init.d/ssh start

    • Starting OpenBSD Secure Shell server sshd Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ssh_host_ecdsa_key Could not load host key: /etc/ssh/ssh_host_ed25519_key [ OK ]
  2. J'ai essayé de comparer les sorties de ssh -vT git@git.company.com dans les deux environnements.
    Ce qui est remarquable, c'est que dans l'environnement natif de Linux, il y a un " Server accepts key... "Ce commentaire est absent de l'environnement WSL. Mais je ne comprends pas vraiment pourquoi ni, surtout, ce que je peux faire pour configurer l'environnement WSL de manière à ce qu'il saute, comme l'environnement natif de Linux, le commentaire " ". git@git.company.com mot de passe.

    $ # This is the Linux-native environment $ uname -a Linux linuxbox 5.4.8-200.fc31.x86_64 #1 SMP Mon Jan 6 16:44:18 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux $ ssh -vT git@git.company.com OpenSSH_8.1p1, OpenSSL 1.1.1d FIPS 10 Sep 2019 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config debug1: configuration requests final Match pass debug1: re-parsing configuration debug1: Reading configuration data /etc/ssh/ssh_config debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config debug1: Connecting to git.company.com [10.138.1.176] port 22. debug1: Connection established. debug1: identity file /home/user/.ssh/id_rsa type 0 debug1: identity file /home/user/.ssh/id_rsa-cert type -1 debug1: identity file /home/user/.ssh/id_dsa type -1 debug1: identity file /home/user/.ssh/id_dsa-cert type -1 debug1: identity file /home/user/.ssh/id_ecdsa type -1 debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/user/.ssh/id_ed25519 type -1 debug1: identity file /home/user/.ssh/id_ed25519-cert type -1 debug1: identity file /home/user/.ssh/id_xmss type -1 debug1: identity file /home/user/.ssh/id_xmss-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_8.1 debug1: Remote protocol version 2.0, remote software version OpenSSH_8.1 debug1: match: OpenSSH_8.1 pat OpenSSH* compat 0x04000000 debug1: Authenticating to git.company.com:22 as 'git' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: aes256-gcm@openssh.com MAC: <implicit> compression: none debug1: kex: client->server cipher: aes256-gcm@openssh.com MAC: <implicit> compression: none debug1: kex: curve25519-sha256 need=32 dh_need=32 debug1: kex: curve25519-sha256 need=32 dh_need=32 debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:+a3ohHfIsc5Bi99RHkwQQTZfMO0IdC5vj3Dxk6XpR9J debug1: Host 'git.company.com' is known and matches the ECDSA host key. debug1: Found key in /home/user/.ssh/known_hosts:59 debug1: rekey out after 4294967296 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey in after 4294967296 blocks debug1: Will attempt key: /home/user/.ssh/id_rsa RSA SHA256:Cf6Ann313zL2As5qABJe85JKJV3L3pGERP+VRCYIaAg agent debug1: Will attempt key: /home/user/.ssh/id_dsa debug1: Will attempt key: /home/user/.ssh/id_ecdsa debug1: Will attempt key: /home/user/.ssh/id_ed25519 debug1: Will attempt key: /home/user/.ssh/id_xmss debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521> debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-with-mic,password debug1: Next authentication method: gssapi-with-mic debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available (default cache: KCM:)

    debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available (default cache: KCM:)

    debug1: Next authentication method: publickey debug1: Offering public key: /home/user/.ssh/id_rsa RSA SHA256:Cf6Ann313zL2As5qABJe85JKJV3L3pGERP+VRCYIaAg agent debug1: Server accepts key: /home/user/.ssh/id_rsa RSA SHA256:Cf6Ann313zL2As5qABJe85JKJV3L3pGERP+VRCYIaAg agent debug1: Authentication succeeded (publickey). Authenticated to git.company.com ([10.138.1.176]:22). debug1: channel 0: new [client-session] debug1: Requesting no-more-sessions@openssh.com debug1: Entering interactive session. debug1: pledge: network debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0 debug1: Remote: /var/opt/gitlab/.ssh/authorized_keys:1121: key options: command user-rc debug1: Remote: /var/opt/gitlab/.ssh/authorized_keys:1121: key options: command user-rc debug1: Sending environment. debug1: Sending env XMODIFIERS = @im=ibus debug1: Sending env LANG = en_US.UTF-8 Welcome to GitLab, @user! debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0 debug1: channel 0: free: client-session, nchannels 1 Transferred: sent 2828, received 2880 bytes, in 0.1 seconds Bytes per second: sent 43777.7, received 44582.6 debug1: Exit status 0

.

$ # This is the WSL environment
$ uname -a
Linux windowsbox 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
$ ssh -vT git@git.company.com
OpenSSH_7.6p1 Ubuntu-4, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to git.company.com [199.21.163.250] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.1
debug1: match: OpenSSH_8.1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to git.company.com:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:+a3ohHfIsc5Bi99RHkwQQTZfMO0IdC5vj3Dxk6XpR9J
debug1: Host 'git.company.com' is known and matches the ECDSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nis
tp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)

debug1: Unspecified GSS failure.  Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)

debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:EfQKfAR2alQK13JaqZ8AVMP7B+hqDEC9CGsOfqOHhL0 /home/user/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Trying private key: /home/user/.ssh/id_ed25519
debug1: Next authentication method: password
git@git.company.com's password:

Quelqu'un peut-il expliquer ce qui se passe dans ces deux environnements, et pourquoi l'un d'entre eux peut cloner à partir de git@git.company.com:namespace/project.git sans mot de passe à entrer par l'utilisateur alors que l'autre ne le peut pas ?

1voto

Dans votre bureau Linux, vous vous connectez en utilisant des certificats au lieu de mots de passe. Il y a probablement plusieurs mois, vous avez configuré votre accès à GitLab en suivant les instructions qui s'y trouvent ( https://docs.gitlab.com/ee/ssh/ ) en générant une paire de clés avec ssh-gen, puis en copiant la clé publique sur le site web de GitLab. Vous pouvez vérifier cela en faisant un cat ~/.ssh/id_rsa.pub et comparez-la avec un champ appelé SSH Key dans les paramètres de sécurité de votre profil GitLab.

Maintenant, dans le nouvel environnement, vous avez généré une nouvelle paire de clés qui ne correspondait pas à celle des paramètres GitLab et qui a donc demandé le mot de passe. Ce que j'ai suggéré dans les commentaires était de copier la paire de clés habituellement ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub à votre environnement WSL. Il s'agit d'un comportement courant, recommandé surtout si vous passez fréquemment d'un outil WSL à un outil Windows. Dans ce cas, vous pouvez copier les informations d'identification dans le dossier .ssh de votre domicile Windows. Vous pouvez également créer une nouvelle clé et l'ajouter à GitLab.

J'espère que cela vous aidera

Salutations

0voto

RookieRick Points 149

Votre serveur Git est probablement une instance GitLab, qui utilise le service OpenSSH par défaut pour les opérations SSH. Lorsque vous vous connectez à l'instance, vous devez disposer d'une clé SSH, mais comme OpenSSH est configuré pour prendre en charge les mots de passe, si vous ne disposez pas d'une clé SSH valide, un mot de passe vous sera demandé.

Cependant, comme il s'agit d'un compte de service, il n'y a pas vraiment de mot de passe valide pour ce compte (le hachage du mot de passe est défini sur une valeur invalide qui ne correspond à aucun hachage valide), et vous ne pourrez pas vous connecter si vous n'avez pas de clé. D'autres plateformes d'hébergement, telles que GitHub, n'utilisent pas le système OpenSSH, et à la place rejetteront simplement toute connexion qui ne fournit pas une clé publique valide.

Comme la clé SSH d'un environnement (WSL) était différente et inconnue du serveur, ce dernier l'a rejetée et est passé à la méthode d'authentification suivante. Vous auriez pu simplement ajouter la clé existante (celle de l'environnement ~/.ssh/id_rsa.pub ) à votre compte utilisateur dans GitLab et vous auriez alors pu accéder au serveur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X