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.
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.
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.
Je pouvais me connecter à mon serveur sous Nautilus (Ubuntu 12.04) à l'aide d'une clé privée en procédant comme suit:
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.
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
.