ssh:权限被拒绝(公钥)

ssh:权限被拒绝(公钥)

一位同事在服务器上工作,并在我们的文档中写下了密码。ssh [email protected]

我刚刚ssh-keygen在我的计算机上做了这件事,并尝试从我的计算机上执行此操作,但出现了以下错误。ssh -v [email protected]

有谁知道如何修理它?

OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug1: Connecting to xxx.xxx.xxx.xxx port 22.
debug1: Connection established.
debug1: identity file /Users/softtimur/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/softtimur/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Ubuntu-10
debug1: match: OpenSSH_7.4p1 Ubuntu-10 pat OpenSSH* compat 0x04000000
debug1: Authenticating to xxx.xxx.xxx.xxx:22 as 'root'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:Pw4cFx5c2WGJzTwTL+gsx3AMHMEuT0sei1fz5oGCrac
debug1: Host 'xxx.xxx.xxx.xxx' is known and matches the ECDSA host key.
debug1: Found key in /Users/softtimur/.ssh/known_hosts:4
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:EL7hm5LvdVADZiv662nneDEeoLKy+etj8OT61eugu4Y /Users/softtimur/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/softtimur/.ssh/id_dsa
debug1: Trying private key: /Users/softtimur/.ssh/id_ecdsa
debug1: Trying private key: /Users/softtimur/.ssh/id_ed25519
debug1: No more authentication methods to try.
[email protected]: Permission denied (publickey).

有谁知道如何解决这一问题?

编辑1:

在我的本地 Mac 上,curl ipecho.net/plain ; echo返回175.169.13.102。我设法从 Digital Ocean 的 Droplet 中打开了一个控制台A,然后我执行了ssh-keygen,然后在控制台中,我执行了返回以下内容的操作;没有询问密码。ssh-copy-id [email protected]

我仍然无法相信服务器可以将文件写入我的本地 Mac,就好像我的本地 Mac 是服务器一样......

在此处输入图片描述

答案1

以下是部署公钥身份验证方法的示例。假设您有服务器A(您要连接的服务器)和(客户端;您想要连接的客户端A使用公钥)。

  1. A,运行以下命令:

    ssh-keygen

    • 这将生成一个私钥-公钥对,如果不带参数运行,它将在下执行此操作~/.ssh
  2. A, 跑步:

    ssh-copy-id [user@]<Bs-IP-address>

    • 这将复制民众密钥生成者A.它将在名为 的文件中执行此操作~/.ssh/authorized_keys

    • 如果由于连接问题或您无法从点连接,则此操作不起作用A,还有另一种(手动)方法。在您的机器中A,转到您的~/.ssh目录并找到您的公钥文件。这可能是一个带有.pub扩展名的文件。打开它并复制内容,然后在将其附加/粘贴到您的~/.ssh/authorized_keys文件中。很重要:此文件必须由用户拥有,组必须是用户的,并且具有权限600。否则不起作用. 这几乎就是ssh-copy-id所做的。

  3. ,尝试通过 SSH 连接到A

需要注意以下几点:

  • 第 2 点中的命令将仅将公钥部署到您正在连接的远程用户。这意味着,如果您将密钥部署到 的主页tom,则用户名为 的用户将jerry无法使用它。简而言之,部署是针对每个用户的。
  • 如果你尝试部署密钥来连接到A使用 时root,请确保PermitRootLogin中的指令具有或 的/etc/ssh/sshd_config值(最好)。如果设置为,公共方法身份验证将不起作用。yesprohibit-passwordno
  • 绝不与任何人共享私钥。

答案2

上述答案(及其作者的评论)存在一些缺陷:它混淆了服务器客户由于此答案(根据审核成员的判断)与原始答案相差太大,不能被接受为简单的编辑,因此将其完整发布在这里

部署公钥认证方法的一种可能方法如下:假设你有一个SSH 服务器 A(您要连接的服务器)和SSH 客户端 B(客户端;您要从中连接到服务器的系统A使用公钥认证)。

  1. 生成个人公钥/私钥对客户B

    • ,运行以下命令:

      ssh-keygen

      • 这将在客户端上生成个人私钥-公钥对,如果不带参数运行,键将存储在中~/.ssh
  2. 部署您的公钥服务器A

    • , 跑步:

      ssh-copy-id [<user-on-A>@]<A's-IP-address>

      • 这将复制您的公钥(由您于在步骤 0) 中A. 它将在一个文件中执行此操作A调用~/.ssh/authorized_keys。为了验证A在此过程中,您必须提供其他凭证,例如用户名/密码组合。(服务器必须允许此登录方法。)
    • 如果你无法连接或登录服务器A这样你就可以手动转移你的公钥服务器A用任何对你有用的方法。在客户B你发现公钥.pub在您的目录中可能以结尾的文件中~/.ssh。内容(一行纯 ASCII 文本)必须附加~/.ssh/authorized_keys服务器A

      很重要:此文件必须由用户拥有,组必须是用户的,并且具有权限600。否则不起作用. 这几乎就是ssh-copy-id所做的。

  3. 客户B,尝试通过 SSH 连接到服务器A

需要注意以下几点:

  • 事实上,你已经能够部署你的一个公钥服务器A(也就是说,进入它的~/.ssh/authorized_keys文件),足以证明服务器A,您将被允许登录该帐户,只要您证明您知道密钥(继续)匹配公钥简而言之:在 SSH 公钥认证期间,您的客户发出挑战,服务器使用以下方式验证签名公钥
  • 如果你尝试部署密钥来连接到A使用 时root,请确保PermitRootLogin中的指令具有或 的/etc/ssh/sshd_config值(最好)。如果设置为,公共方法身份验证将不起作用。yesprohibit-passwordno
  • 分享私钥和任何人。

相关内容