web-dev-qa-db-fra.com

Impossible de se connecter à un serveur distant avec Nautilus et une clé privée

Le serveur distant nécessite une clé privée et une phrase secrète pour l'authentification. J'essaie de me connecter au serveur en tant que root (sur ce serveur) à partir de Nautilus s'exécutant au nom de mon compte non root sur mon bureau Ubuntu local. La clé privée nécessaire à l'authentification est non située dans ~/.ssh (j'ai déjà d'autres clés ici) mais je l'ai dans un autre répertoire.

En plus de l'approche évidente, j'ai essayé de mettre root@server dans le champ "Serveur" et de laisser vides les champs "Nom d'utilisateur" et "Mot de passe", en mettant la phrase secrète dans le champ "Mot de passe", mais le message "Permission". refusée "et ne demande jamais la clé privée.

J'ai aussi essayé ssh-add path/to/privatekey, mais le message "Impossible d'ouvrir une connexion à votre agent d'authentification", mais je ne suis pas sûr que ssh-add soit même pertinent ici.

Je peux SSH dans le serveur à partir du terminal très bien avec

ssh -i <...>/id_rsa root@server

et répondre à la question de phrase secrète qui suit.

4
Desmond Hume

Je ne vois pas pourquoi le dialogue de sélection de clé devrait apparaître du tout. C'est au serveur de proposer les méthodes d'authentification qu'il accepte et au client de fournir les informations d'identification.

L’une des méthodes les plus courantes pour fournir ces détails est l’utilisation de ssh-agent que vous ne semblez pas exécuter. C’est un petit extrait que j’ai mis dans mon ~/.profile afin de s’assurer que mon agent ssh est toujours en cours d’exécution:

run_ssh_agent() {
  ssh-agent | grep -vi 'agent pid' > ~/.ssh-agent
  . ~/.ssh-agent
}

if [[ -f ~/.ssh-agent ]]; then
  . ~/.ssh-agent
  if [[ -n ${SSH_AGENT_PID} ]]; then
    if ! ps -p ${SSH_AGENT_PID} | grep 'ssh-agent' &>/dev/null; then
      run_ssh_agent
    fi
  fi
else
  run_ssh_agent
fi

Mettez le code ici, déconnectez-vous de votre session X, reconnectez-vous, ouvrez un terminal et ajoutez votre clé à votre agent:

ssh-add /path/to/your/private_key

Vérifiez qu'il est ajouté en exécutant ssh-add -l et en vous connectant au serveur à l'aide de Nautilus sans fournir le mot de passe.

4
Marcin Kaminski

La version courte (sauter le script) de la solution de Marcin Kaminski est

ssh-agent
ssh-add /path/to/your/private_key
nautilus sftp://user@server

. Je pense qu'il est plus facile de commencer par tester si la solution fonctionne. J'ai eu le même problème après avoir défini PasswordAuthentication no dans /etc/ssh/sshd_config et ces trois commandes ont résolu mon problème.

8
Adriaan

Je pouvais me connecter à mon serveur sous Nautilus (Ubuntu 12.04) à l'aide d'une clé privée en procédant comme suit:

  • Dans Nautilus, sélectionnez le menu: "Fichier" -> "Se connecter au serveur ..."
  • Remplacez "Type:" par "SSH"
  • Entrez l'adresse du serveur dans le champ "Serveur:" (en omettant le nom d'utilisateur @)
  • Entrez votre nom d'utilisateur après "Nom d'utilisateur:" mais laissez le champ mot de passe vide.

Lorsque vous cliquez sur "Connecter", une boîte de dialogue apparaît pour vous indiquer qu'un mot de passe est nécessaire pour déverrouiller la clé. Dans mon cas, la clé n'était pas la valeur par défaut "~/.ssh/id_rsa", la communication entre le client SSH et le serveur doit donc avoir révélé à Nautilus quelle clé devrait être utilisée.

Après avoir entré le mot de passe, une nouvelle fenêtre Nautilus s’est ouverte dans laquelle je pourrais parcourir les fichiers sur mon serveur. Dans le volet de gauche, j'ai maintenant un raccourci "SFTP pour utilisateur sur serveur" que je peux également utiliser pour monter le système de fichiers du serveur.

1
jmidgren

Si je comprends bien, vous utilisez une authentification par clé publique, mais votre clé privée nécessite un mot de passe pour être déverrouillée, et la tentative de connexion échoue puisque vous n'êtes apparemment pas invité à entrer le mot de passe protégeant la clé.

Cette question est légèrement différente, mais la première réponse semble décrire la même situation. Cependant, cela implique que le dialogue de mot de passe doit fonctionner . Peut-être que cela fournira un point de départ si?

Puisque vous dites que cela fonctionne si vous utilisez ssh dans un terminal, ce n’est probablement pas quelque chose comme le changement d’identité de l’hôte distant, qui, à mon avis, peut provoquer des échecs silencieux dans nautilus.

0
chronitis