我最近在两台 Linux 机器上设置了 ssh(我们称它们为服务器 a、客户端 b)。我使用 ssh key gen 在客户端 b 机器上生成了两个 ssh 身份验证文件,并且可以在 .ssh 目录中看到公共文件和私有文件。我将它们命名为“example”和“example.pub”。
然后我将 example.pub 添加到了服务器 a 的 auth 文件中。当我尝试通过 ssh 进入服务器 a 时,它仍然要求密码验证,而我想要的是无密码登录(客户端 b 上的私钥无需密码即可设置)。
当我尝试使用 '-v' 进行 ssh 时,得到以下输出:
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/abc/.ssh/identity
debug1: Offering public key: /Users/abc/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Offering public key: /Users/abc/.ssh/id_dsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1
Password:
请帮忙。
答案1
您也可以使用“ssh-copy-id”将公钥上传到服务器。
语法是:
ssh-copy-id [-i [identity_file]] [user@]machine
如果这不起作用,请回答上述 Trevor 的问题。
答案2
公钥认证有时会有点烦人。授权密钥文件的默认位置是 ~/.ssh/authorized_keys,密钥必须采用单行格式(所有内容都在一行上,对我来说,如果它采用多行格式,那么你几乎可以放弃让它工作的所有希望)。
另外,这是一个愚蠢的想法,但您可以确保位置 .ssh/authorized_keys 被设置为公钥默认位置的主值。
还可以检查服务器上的日志文件,看看是否有任何有用的信息。