Question

Can't npm install GitHub Repository - Get error git@github.com: Permission denied (publickey).

Posted June 19, 2021 3.2k views
GitGitHub Actions

Hi Everyone!

I have been trying to figure out how to successfully install an npm package hosted on my Github account.
It works locally on my mac but not from my Digital Ocean Droplet.

Here are the guides I have looked at it and tried:
https://www.digitalocean.com/community/questions/permission-denied-publickey-using-git-from-digitalocean-console-forge-user

https://stackoverflow.com/questions/57808112/digitalocean-and-github-permission-denied

and several others!

Nothing works.

I regenerated new keys and uploaded them to GitHub but still nothing.

The command I am trying to run is:

npm install git+ssh://github.com/mujibsardar/nodebb-theme-askavan.git

I get:

35 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "git+ssh://github.com/mujibsardar/nodebb-theme-askavan.git"
36 verbose node v10.16.0
37 verbose npm  v7.18.1
38 error code 128
39 error command failed
40 error command git --no-replace-objects ls-remote ssh://git@github.com/mujibsardar/nodebb-theme-askavan.git
41 error git@github.com: Permission denied (publickey).
41 error fatal: Could not read from remote repository.
41 error
41 error Please make sure you have the correct access rights
41 error and the repository exists.
42 verbose exit 128

here are the permissions on my .ssh directory

drwx------ 2 root root 4096 Feb  1 21:21 .
drwx------ 9 root root 4096 Jun 18 22:34 ..
-rw-r--r-- 1 root root  103 Jun 19 16:33 authorized_keys
-rw------- 1 root root  411 Jun 18 18:59 id_ed25519
-rw-r--r-- 1 root root  103 Jun 18 18:59 id_ed25519.pub
-rw-r--r-- 1 root root 1548 Jun 18 18:26 known_hosts

My apologies if I missed to share something more fundamental. Any help would be highly appreciated!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
1 answer

Hi there @avansardar,

As discussed below, the fix was to upgrade the Node version from v10.x to v14.x as per this tutorial here.

The setup actually looks all good. What I could suggest is to try to SSH to GitHub by adding the -v argument to see some debug messages:

ssh -vvv git@github.com

Feel free to share the output here.

Alternatively, I would recommend using HTTP rather than SSH to install the package:

npm install git+https://github.com/mujibsardar/nodebb-theme-askavan.git

Let me know how it goes!
Regards,
Bobby

by Brian Boucheron
In this guide, we will show you three different ways of getting Node.js installed on an Ubuntu 20.04 server: using apt to install the nodejs package from Ubuntu's default software repository, using apt with an alternate PPA software repository to install specific versions of the nodejs package, and installing the Node Version Manager and using it to install and manage multiple versions of Node.js
  • Thank you for the response.

    I get the same permission denied message if I try the https method.

    For the SSH -v I get the following:

    OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, 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 *
    debug2: resolving "github.com" port 22
    debug2: ssh_connect_direct: needpriv 0
    debug1: Connecting to github.com [192.30.255.113] port 22.
    debug1: Connection established.
    debug1: permanently_set_uid: 0/0
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_rsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_rsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_dsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_dsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ecdsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ecdsa-cert type -1
    debug1: identity file /root/.ssh/id_ed25519 type 3
    debug1: key_load_public: No such file or directory
    debug1: identity file /root/.ssh/id_ed25519-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
    debug1: Remote protocol version 2.0, remote software version babeld-4cec2db4
    debug1: no match: babeld-4cec2db4
    debug2: fd 3 setting O_NONBLOCK
    debug1: Authenticating to github.com:22 as 'git'
    debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
    debug3: record_hostkey: found key type RSA in file /root/.ssh/known_hosts:2
    debug3: load_hostkeys: loaded 1 keys from github.com
    debug3: order_hostkeyalgs: prefer hostkeyalgs: ssh-rsa-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa
    debug3: send packet: type 20
    debug1: SSH2_MSG_KEXINIT sent
    debug3: receive packet: type 20
    debug1: SSH2_MSG_KEXINIT received
    debug2: local client KEXINIT proposal
    debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
    debug2: host key algorithms: ssh-rsa-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
    debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
    debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: compression ctos: none,zlib@openssh.com,zlib
    debug2: compression stoc: none,zlib@openssh.com,zlib
    debug2: languages ctos: 
    debug2: languages stoc: 
    debug2: first_kex_follows 0 
    debug2: reserved 0 
    debug2: peer server KEXINIT proposal
    debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
    debug2: host key algorithms: rsa-sha2-512,rsa-sha2-256,ssh-rsa,ssh-dss
    debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc
    debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc
    debug2: MACs ctos: hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: MACs stoc: hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
    debug2: compression ctos: none
    debug2: compression stoc: none
    debug2: languages ctos: 
    debug2: languages stoc: 
    debug2: first_kex_follows 0 
    debug2: reserved 0 
    debug1: kex: algorithm: curve25519-sha256
    debug1: kex: host key algorithm: rsa-sha2-512
    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
    debug3: send packet: type 30
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug3: receive packet: type 31
    debug1: Server host key: ssh-rsa SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
    debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
    debug3: record_hostkey: found key type RSA in file /root/.ssh/known_hosts:2
    debug3: load_hostkeys: loaded 1 keys from github.com
    debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
    debug3: record_hostkey: found key type RSA in file /root/.ssh/known_hosts:4
    debug3: load_hostkeys: loaded 1 keys from 192.30.255.113
    debug1: Host 'github.com' is known and matches the RSA host key.
    debug1: Found key in /root/.ssh/known_hosts:2
    debug3: send packet: type 21
    debug2: set_newkeys: mode 1
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug3: receive packet: type 21
    debug1: SSH2_MSG_NEWKEYS received
    debug2: set_newkeys: mode 0
    debug1: rekey after 134217728 blocks
    debug2: key: /root/.ssh/id_rsa ((nil))
    debug2: key: /root/.ssh/id_dsa ((nil))
    debug2: key: /root/.ssh/id_ecdsa ((nil))
    debug2: key: /root/.ssh/id_ed25519 (0x55bbcc973ef0)
    debug3: send packet: type 5
    debug3: receive packet: type 7
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ssh-dss>
    debug3: receive packet: type 6
    debug2: service_accept: ssh-userauth
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug3: send packet: type 50
    debug3: receive packet: type 51
    debug1: Authentications that can continue: publickey
    debug3: start over, passed a different list publickey
    debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
    debug3: authmethod_lookup publickey
    debug3: remaining preferred: keyboard-interactive,password
    debug3: authmethod_is_enabled publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: /root/.ssh/id_rsa
    debug3: no such identity: /root/.ssh/id_rsa: No such file or directory
    debug1: Trying private key: /root/.ssh/id_dsa
    debug3: no such identity: /root/.ssh/id_dsa: No such file or directory
    debug1: Trying private key: /root/.ssh/id_ecdsa
    debug3: no such identity: /root/.ssh/id_ecdsa: No such file or directory
    debug1: Offering public key: ED25519 SHA256:nuMfrxVPrq8PPhXfAHYO2gPS94nRUMCpWbWrHv+fNDs /root/.ssh/id_ed25519
    debug3: send_pubkey_test
    debug3: send packet: type 50
    debug2: we sent a publickey packet, wait for reply
    debug3: receive packet: type 60
    debug1: Server accepts key: pkalg ssh-ed25519 blen 51
    debug2: input_userauth_pk_ok: fp SHA256:nuMfrxVPrq8PPhXfAHYO2gPS94nRUMCpWbWrHv+fNDs
    debug3: sign_and_send_pubkey: ED25519 SHA256:nuMfrxVPrq8PPhXfAHYO2gPS94nRUMCpWbWrHv+fNDs
    debug3: send packet: type 50
    debug3: receive packet: type 52
    debug1: Authentication succeeded (publickey).
    Authenticated to github.com ([192.30.255.113]:22).
    debug1: channel 0: new [client-session]
    debug3: ssh_session2_open: channel_new: 0
    debug2: channel 0: send open
    debug3: send packet: type 90
    debug1: Entering interactive session.
    debug1: pledge: network
    debug3: receive packet: type 91
    debug2: channel_input_open_confirmation: channel 0: callback start
    debug2: fd 3 setting TCP_NODELAY
    debug3: ssh_packet_set_tos: set IP_TOS 0x10
    debug2: client_session2_setup: id 0
    debug2: channel 0: request pty-req confirm 1
    debug3: send packet: type 98
    debug1: Sending environment.
    debug3: Ignored env LS_COLORS
    debug3: Ignored env SSH_CONNECTION
    debug3: Ignored env LESSCLOSE
    debug1: Sending env LANG = C.UTF-8
    debug2: channel 0: request env confirm 0
    debug3: send packet: type 98
    debug3: Ignored env XDG_SESSION_ID
    debug3: Ignored env USER
    debug3: Ignored env PWD
    debug3: Ignored env HOME
    debug3: Ignored env SSH_CLIENT
    debug3: Ignored env XDG_DATA_DIRS
    debug3: Ignored env SSH_TTY
    debug3: Ignored env MAIL
    debug3: Ignored env TERM
    debug3: Ignored env SHELL
    debug3: Ignored env SHLVL
    debug3: Ignored env LOGNAME
    debug3: Ignored env XDG_RUNTIME_DIR
    debug3: Ignored env PATH
    debug3: Ignored env LESSOPEN
    debug3: Ignored env _
    debug3: Ignored env OLDPWD
    debug2: channel 0: request shell confirm 1
    debug3: send packet: type 98
    debug2: channel_input_open_confirmation: channel 0: callback done
    debug2: channel 0: open confirm rwindow 32000 rmax 35000
    debug3: receive packet: type 100
    debug2: channel_input_status_confirm: type 100 id 0
    PTY allocation request failed on channel 0
    debug3: receive packet: type 99
    debug2: channel_input_status_confirm: type 99 id 0
    debug2: shell request accepted on channel 0
    debug2: channel 0: rcvd ext data 93
    debug3: receive packet: type 98
    debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
    debug3: receive packet: type 96
    debug2: channel 0: rcvd eof
    debug2: channel 0: output open -> drain
    debug3: receive packet: type 97
    debug2: channel 0: rcvd close
    debug2: channel 0: close_read
    debug2: channel 0: input open -> closed
    debug3: channel 0: will not send data after close
    debug2: channel 0: obuf_empty delayed efd 6/(93)
    Hi mujibsardar! You've successfully authenticated, but GitHub does not provide shell access.
    debug2: channel 0: written 93 to efd 6
    debug3: channel 0: will not send data after close
    debug2: channel 0: obuf empty
    debug2: channel 0: close_write
    debug2: channel 0: output drain -> closed
    debug2: channel 0: almost dead
    debug2: channel 0: gc: notify user
    debug2: channel 0: gc: user detached
    debug2: channel 0: send close
    debug3: send packet: type 97
    debug2: channel 0: is dead
    debug2: channel 0: garbage collecting
    debug1: channel 0: free: client-session, nchannels 1
    debug3: channel 0: status: The following connections are open:
      #0 client-session (t4 r43 i3/0 o3/0 fd -1/-1 cc -1)
    
    debug3: send packet: type 1
    Connection to github.com closed.
    Transferred: sent 2336, received 2408 bytes, in 0.2 seconds
    Bytes per second: sent 13405.4, received 13818.6
    debug1: Exit status 1
    

    I see the

    ...
    Hi mujibsardar! You've successfully authenticated, but GitHub does not provide shell access.
    ...
    

    in there.

    So I am not sure what is going on.

    • Hi there @avansardar,

      The SSH command shows that the authentication with GitHub was successful, so your keys seem to be all setup correctly.

      As this is a public repository, I’ve tested the command on my end and it worked as expected with both SSH and HTTP:

      npm install from GitHub directly

      Maybe try adding the --verbose flag to your npm install install command to see some more information on why it could be failing.

      Regards,
      Bobby

      • Hey Bobby,

        Thank you so much for your help. I tried the running the command with the –verbose flag but nothing new was revealed. Is there a possibility the issue is with the Digital Ocean server? The only thing is I wouldn’t know what issue it could possibly be. Thanks again for you help.

        Avan

        • Hi there,

          This should not be the case, the screenshot that I’ve sent is actually from a DigitalOcean Droplet too.

          What is the exact NPM version that you have? I could suggest trying to install NVM and then install the latest version of Node as a test.

          Also, maybe try clearing the NPM cache in case that it is causing any problems.

          Let me know how it goes!

          • That did it @bobbyiliev !

            I upgraded Node from

            v10.16.0
            

            to

            v14.4.0
            

            by installing nvm:

            curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
            

            then

            source ~/.nvm/nvm.sh
            

            followed by:

            nvm install 14.4.0
            

            Thank you so much!

          • Hi there,

            No problem at all! Happy to her that you’ve got it all working now!

            Regards,
            Bobby