无法使用 Nautilus 和私钥连接到远程服务器

Des*_*ume 4 ssh nautilus authentication

远程服务器需要私钥和密码进行身份验证。我正在尝试root从 Nautilus连接到服务器(在该服务器上),代表我在本地 Ubuntu 桌面上的非 root 帐户运行。这是需要验证的私钥是不是设在~/.ssh(我已经有其它键存在),但我有它的另一个目录。

除了明显的方法之外,我还尝试将root@server“服务器”字段放入并将“用户名”和“密码”字段留空,将密码放在“密码”字段中,但它仍然显示“权限被拒绝”并且它没有在任何时候都不要要求私钥。

我也试过ssh-add path/to/privatekey,但它说“无法打开与您的身份验证代理的连接。”,但是我不确定ssh-add这里是否相关。

我可以从终端通过 ssh 进入服务器就好了

ssh -i <...>/id_rsa root@server
Run Code Online (Sandbox Code Playgroud)

并回答接下来的密码问题。

Adr*_*aan 8

Marcin Kaminski 解决方案的简短版本(跳过脚本)是

ssh-agent
ssh-add /path/to/your/private_key
nautilus sftp://user@server
Run Code Online (Sandbox Code Playgroud)

. 我认为开始更容易,测试解决方案是否有效。我有同样的问题后,设置PasswordAuthentication no/etc/ssh/sshd_config与这三个命令解决我的问题。


Mar*_*ski 6

我根本不明白为什么要出现关键选择对话框。由服务器提供它愿意接受的身份验证方法,并由客户端提供凭据。

提供这些详细信息的最常见方法之一是使用您似乎没有运行的 ssh-agent。这是我放入的一个小片段,~/.profile以确保我的 ssh-agent 始终运行:

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
Run Code Online (Sandbox Code Playgroud)

将代码放在那里,注销您的 X 会话,重新登录,打开终端并将密钥添加到代理中:

ssh-add /path/to/your/private_key
Run Code Online (Sandbox Code Playgroud)

ssh-add -l通过使用 Nautilus 运行并连接到服务器(无需提供密码)来验证它是否已添加。