J'ai un serveur distant. Je peux déjà ssh avec succès sur ce serveur distant - ma clé est authorized_keys
sur le serveur distant.
Maintenant, je veux tirer de GitHub directement sur ce serveur distant. Mais je reçois permission denied (publickey)
quand j'essaie ssh -T [email protected]
sur le serveur distant.
Dois-je copier id_rsa.pub
directement depuis ma machine locale sur le serveur distant, ou est-ce dangereux?
Si telle est la réponse, quelle est la meilleure façon de procéder?
Ou dois-je générer une nouvelle clé publique sur le serveur distant et l'ajouter à mon compte github?
MISE À JOUR:
Voici la sortie d'un ssh verbeux:
~$ ssh -Tv [email protected]
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication
Permission denied (publickey)
sur la machine distante.Réponses:
le
id_rsa.pub
peut être copié n'importe où sans aucun danger réel pour lui. Ceci est votre clé publique et est destiné à des choses comme celle-ci. Il s'agit de la moitié d'une paire de clés, et le partager avec les endroits auxquels vous souhaitez accéder est la façon dont vous autorisez la clé privée à fonctionner.Pour permettre la connexion à distance, votre clé publique doit être répertoriée dans
authorized_keys
(authorized_keys2
sur certains systèmes). Une clé sur chaque ligne, dans ce format:Pour ce faire, une fois que vous l'avez copié, ajoutez-le simplement au
authorized_keys
fichier comme ceci:cat id_rsa.pub >> ~/.ssh/authorized_keys
La plupart des systèmes sensés refuseront lâchement de vous autoriser à utiliser la connexion par clé si le
.ssh
dossier a des autorisations trop lâches. Le dossier devrait l'être700
, donc si vous rencontrez toujours des problèmes:chmod 700 ~/.ssh
De plus, les fichiers dans le
.ssh
dossier doivent être 600:chmod 600 ~/.ssh
Modifier 1:
Le fichier lui-même
id_rsa.pub
n'est pas requis lui-même sur le serveur distant. Seul le contenu, dans le cadre deauthorized_keys
. Je recommande d'exécuterssh -vT [email protected]
pour activer la journalisation détaillée, afin que vous puissiez voir exactement de quelles autorisations il se plaint.Modifier 2:
Cela signifie qu'aucune des clés proposées ne correspond à ce que le serveur distant a dans le fichier. Ce que vous voulez voir, c'est quelque chose comme ceci:
A vérifier:
authorized_keys
authorized_keys
àauthorized_keys2
la source
~/.ssh/authorized_keys
sur le serveur distant - je l'ai ajoutée à l'aidecat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"
. Puis sshed à la télécommande et a couru~$ chmod 700 ~/.ssh
et$ chmod 600 ~/.ssh/authorized_keys
mais toujoursPermission denied (publickey)
quand j'essaie de ssh à github. Dois-je également copier leid_rsa.pub
fichier entier sur la machine distante?ssh
commande décrite dans votre question avec le-v
commutateur pour voir exactement les autorisations dont se plaint ssh.check that one of the private keys...
- que dois-je faire ici?Selon votre trace de débogage, aucun de ces fichiers de clés n'existe réellement sur le système local, et ssh n'a en fait offert aucune clé au serveur distant. Assurez-vous que la clé que vous souhaitez utiliser existe réellement sur l'hôte sur lequel vous exécutez ssh et que le fichier a le bon nom. Si vous souhaitez utiliser un fichier de clé autre que l'un des fichiers par défaut, vous devez le spécifier sur la ligne de commande ssh:
la source
authorized_keys
. Est-ce suffisant ou dois-je également copier le fichier de clé là-bas?authorized_keys
est pour les clés publiques qui seront acceptées pour les connexions entrantes . Vous avez besoin d'une copie du fichier de clé privée pour établir une connexion sortante avec un autre hôte. Alors oui, l'un de ces fichiers clés (id_rsa, etc.) doit être présent sur l'hôte sur lequel vous exécutez ssh.Le serveur a besoin de votre clé privée pour s'authentifier auprès de Github. Votre clé publique, comme son nom l'indique, est considérée comme publique, elle ne peut donc pas être suffisante pour s'authentifier.
Si vous n'avez pas besoin d'utiliser Github sur le serveur distant sans vous être connecté via ssh, vous devez utiliser le transfert d'agent ssh. Un guide pour cela est disponible sur Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .
Sinon, vous devez générer une nouvelle clé et la lier à votre compte.
la source
Vous pouvez directement mettre la commande.
si vous avez déjà la clé ssh, elle l'affichera. Sinon, cela donne une erreur. Vous devez ajouter une nouvelle clé.
la source