【问题标题】:Putty: Getting Server refused our key Error腻子:让服务器拒绝我们的关键错误
【发布时间】:2014-01-18 19:05:50
【问题描述】:

我使用puttygen.exe 创建了密钥对(客户端是 Windows 8)。在服务器(Ubuntu 12.04.3 LTS)上,我已将我的公钥放入 ~/.ssh/authorized_keys。公钥是这样的:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAopfM6RHOgnuc4Aftn3t4k5UIAT3StCAbn/vg/IMbphbXadshC+79sIlRq3P4zGzMjFTP4hKnzu6ehLV5lmj/qorq3SKT+bPO5Qrac3VbIlrGvuBFDDjP82I2Hwg3HzlsFTstqk++KToapaTYZ7jENEYyPl2wnzITJnt//+4U1o6juoXTKgdNE02hHnRZyHOV/bnkZyJJCEwJv5U0eXSThQnhmXtUxGT8U0HQNFiXfqIIVllhWiCnyrhhIaKz/CIJNAd2VmzyJzQtJtTQX8aWSNVrZju6Sv2/RncTNvsACdNgjjh/FH8PQXaep00jlJ3MOdsC8vz6VSPFbh6iKy1oLQ== rsa-key-20131231

所以是正确的(一行,没有cmets,以ssh-rsa开头等)

.ssh dir 权限级别为 700,authorized_keys 文件权限为 600。我尝试登录的实际用户拥有的目录和文件。

当我尝试连接时,我收到'server refused our key' 并且服务器要求输入密码。就这样。尝试使用密钥登录时,没有任何内容记录到 /var/log/auth.log

我到处查看,所有文章和提示都提到为文件/目录设置 chmod 600 和 700 并正确格式化密钥。我已经完成了所有这些操作,但仍然出现“拒绝我们的关键”错误,而且我没有想法。

【问题讨论】:

  • 您是否告诉 Putty 使用相同的密钥?您是否使用同一用户登录?这是默认的 SSH 安装,还是您修改了 sshd_config?
  • Puttygen 生成 3 个密钥:私有、公共和它自己的带有 .ppk 扩展名的私有密钥版本。我当然使用 .ppk 和 putty.exe 并将公钥粘贴到服务器上的 .ssh/authorized_keys 中。它是默认的 SSH 安装/配置,我没有修改 sshd_config。
  • 顺便说一句,我必须创建 .ssh 目录和 auhtorized_keys,因为它是全新的 Ubuntu 安装并且它不存在。也许这与问题有关?
  • 确保 sshd_config 配置为使用公钥,它可能不是
  • 您在 /var/log/auth.log 中看到什么了吗?将 SSH 的日志的 LogLevel 增加到 DEBUG 并查看您是否可以看到记录的任何问题,如果仍然没有显示您正在访问您正在查看错误的日志文件

标签: ssh putty


【解决方案1】:

好的,我的密钥中有一个小错字。显然,在粘贴到文件时,第一个字母被切断了,它以 sh-rsa 而不是 ssh-rsa 开头。

nrathathaus - 你的回答非常有帮助,非常感谢,这个答案归功于你 :) 我确实像你说的那样在 sshd_conf 中设置了这个:

LogLevel DEBUG3

通过查看日志,我意识到 sshd 正确读取了密钥,但由于标识符不正确而拒绝了它。

【讨论】:

  • 您检查了哪些日志,它们在哪里?你在说什么标识符?
  • @user1046647 LogLevel/etc/ssh/sshd_config 中定义。默认日志为/var/log/auth.log,除非在sshd_config 中另有定义。
  • 密钥生成器一定有问题,因为我遇到了同样的问题!
  • 如果您在 vim 中打开 authorized_key 并立即尝试从 'ssh_rsa' 粘贴第一个 's' 被视为 vim 命令,之后 vim 将切换到插入模式并粘贴剩余的文本. 如果在粘贴前进入插入模式(例如使用i),前导的's'不会被剪切。
  • sudo service ssh restart 使更改生效。否则我的身份验证日志文件中没有任何内容。
【解决方案2】:

另一个原因可能是authorized_keys 文件中的UTF-8 BOM

【讨论】:

    【解决方案3】:

    对于那些从 Windows Server 收到此错误的人,我收到了同样的错误,这是一个用户帐户问题。对于许多组织,管理员的组策略可能不允许设置 SSH 服务器和连接。使用这种类型的设置,必须从本地管理员帐户完成。如果您确认公钥中没有任何拼写错误,则可能值得研究。

    【讨论】:

      【解决方案4】:

      添加一些想法作为其他答案有所帮助,但并不完全合适。

      首先,如接受的答案中所述,编辑

      /etc/ssh/sshd_config
      

      并设置日志级别:

      LogLevel DEBUG3
      

      然后尝试验证,失败时查找日志文件:

      /var/log/secure
      

      它会有你正在寻找的错误。

      【讨论】:

      • /var/log/ 存在,但 secure 不存在。如何发现正在写入的日志?
      • 默认是/var/log/auth.log,至少在我的Ubuntu 14.04.1中。
      • 是的!谢谢!原来我的 pub 密钥文件最后有一个不可见的 \n
      • Linux/Ubuntu 太令人沮丧了。在阅读 @axel cmets 之前,花了 20 分钟试图弄清楚为什么没有 secure 文件。
      【解决方案5】:

      就我而言,我必须在 Centos6.6 上禁用 SELinux 才能使其正常工作:)

      编辑 /etc/selinux/config 并设置以下内容,然后重新启动主机。

      selinux=disabled
      

      顺便说一句...忘了提到我必须设置 LogLevel=DEBUG3 来识别问题。

      【讨论】:

      • 您可以更改 .ssh 文件夹上的安全上下文,而不是禁用 SELinux。 chcon -R -t ssh_home_t .ssh
      【解决方案6】:

      我添加这个答案是为了帮助像我这样花费数小时在互联网上搜索但没有成功的人。

      您的主文件夹可能已加密。

      或者就此而言,您的“authorized_keys”文件嵌套在其中的任何文件夹。伙计,那会为我节省很多时间。要检查,请执行

      ls -A
      

      在您要确定其加密状态的目录上。如果该文件夹包含一个名为“.encryptfs”的文件夹,答案是肯定的,该文件夹已加密。这将妨碍您访问包​​含验证所需的公共 ssh 密钥的“authorized_keys”文件。

      要解决此问题,请将“authorized_key”文件放在不包含加密的目录树中。

      【讨论】:

        【解决方案7】:

        我在 solaris 上遇到了同样的错误,但在 /var/adm/splunk-auth.log 中发现以下内容:

        sshd: [auth.debug] debug1: PAM conv function returns PAM_SUCCESS
        sshd: [auth.notice] Excessive (3) login failures for weblogic: locking account.
        sshd: [auth.debug] ldap pam_sm_authenticate(sshd-kbdint weblogic), flags = 1
        sshd: [auth.info] Keyboard-interactive (PAM) userauth failed[9] while authenticating: Authentication failed
        

        在 /etc/shadow 中帐户被锁定:

        weblogic:*LK*UP:16447::::::3
        

        删除了“*LK*”部分:

        weblogic:UP:16447::::::3
        

        我可以像往常一样使用带授权密钥的 ssh。

        【讨论】:

          【解决方案8】:

          我找到的简单解决方法是将authorized_keys文件从隐藏的.ssh目录中移开,放到系统ssh目录中:

          /etc/ssh/keys/authorized_keys
          

          只要我这样做了,它就没有问题了。

          【讨论】:

            【解决方案9】:

            就我而言,我还必须将 /home/user 的权限从 0755 更改为 0700。

            【讨论】:

            • 这是我的原因和解决方案
            • 我自己的文件夹 700 和 authorized_keys 600 解决了问题
            • 对我来说也是一样, .ssh 文件夹上的 chmod 700 和 authorized_keys 上的 chmod 600 解决了这个问题
            • .ssh 文件夹 700 和授权密钥 600 为我修复了它。
            【解决方案10】:

            感谢 nrathaus 和 /var/log/auth.log 对调试级别的调查如下。

            另一个原因是您的主目录可能具有不同于 755 的权限。

            【讨论】:

            • 你的主目录应该是 700,这是 CentOS 上的默认值。
            【解决方案11】:

            在我的情况下,它是由 (/etc/ssh/sshd_config) 引起的:

            PermitRootLogin no
            

            改成yes,重启服务正常进入。

            【讨论】:

            • 危险的答案!
            【解决方案12】:

            我在 psftp 中使用 PUTTYgen 文件,当我们需要为客户端创建新密钥时,我在我的 Windows Server 上遇到了这个问题。 private_key_name.ppk 文件和 open_ssh.txt 文件必须位于同一目录中才能使连接正常工作。

            【讨论】:

              【解决方案13】:

              在我的例子中,nfs 上的 home 是 777,需要是 750。这解决了问题。

              【讨论】:

                【解决方案14】:

                在 windows server 2008 r2 中遇到了同样的问题,并探索了很多要解决的问题,最后通过以下方式解决了:

                使用文本板或任何其他文本编辑器打开 C:\Program Files (x86)\OpenSSH\etc\sshd_config

                从以下行中删除注释,删除后它们应如下所示:

                RSAAuthentication yes
                PubkeyAuthentication yes
                AuthorizedKeysFile  .ssh/authorized_keys
                

                现在保存并尝试使用私钥登录。 玩得开心。

                【讨论】:

                • ssh 有时安装时已将授权密钥文件行注释掉,因此它不知道在哪里查找授权密钥文件:-(
                • authorized_keys 文件需要哪些权限?而且一定要在用户目录下还是在OpenSSH的目录下?
                • 它应该位于 OpenSSH 目录或您安装 OpenSSH 的位置。你应该能找到它
                • 确保您使用管理员帐户进行设置。
                【解决方案15】:

                我已经解决了这个问题,puttygen是第三方软件,它生成的ssh key没有直接使用,所以你必须做一些修改。 例如,它看起来像这样

                ---- BEGIN SSH2 PUBLIC KEY ----
                Comment: "rsa-key-20170502"
                AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7
                *******C4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ==
                ---- END SSH2 PUBLIC KEY ---- 
                

                中间的一些字母我省略了,用*代替,如果没有,StackOverflow告诉我代码格式错误,别让我发帖。

                这是我用puttygen生成的ssh key,你必须改成这个

                ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7wfvKGWWR7wxA8GEXJsM01FQw5hYWbNF0CDI7nCMXDUEDOzO1xKtNoaidlLA0qGl67bHaF5t+0mE+dZBGqK7jG9L8/KU/b66/tuZnqFqBjLkT+lS8MDo1okJOScuLSilk9oT5ZiqxsD24sdEcUE62S8Qwu7roVEAWU3hHNpnMK+1szlPBCVpbjcQTdiv1MjsOHJXY2PWx6DAIBii+/N+IdGzoFdhq+Yo/RGWdr1Zw/LSwqKDq1SmrpToW9uWVdAxeC4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ== yourname@hostname
                

                就我而言,我删除了一些cmets,例如

                ---- BEGIN SSH2 PUBLIC KEY ----
                Comment: "rsa-key-20170502"
                ---- END SSH2 PUBLIC KEY ----
                

                并在开头添加ssh-rsa, 最后添加yourname@hostname注意:最后不要删除==,你必须为你更改“你的名字”和“主机名”,在我的情况下,是uaskh@mycomputer,你的名字是你要登录你的vps .当所有这些事情都完成后,你可以通过cat public-key >> ~/.ssh/authorized_keys然后sudo chmod 700 ~/.sshsudo chmod 600 ~/.ssh/authorized_keys将公钥上传到uaskh的家~/.ssh/authorized_keys然后你必须修改/etc/ssh/sshd_config,RSAAuthentication yesPubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys我的操作系统是CentOS 7,这是我第一次回答问题,我会努力做的,谢谢!

                【讨论】:

                • @Ronak Bhatt,感谢您为我所做的努力,我试图让代码更清晰,对于所有这些代码,我使用 ctrl + K,但 StackOverflow 告诉我“您的回答上诉包含代码,请使用正确的格式”,我不明白为什么书面和提交之间的不同,我无法提交我的答案,这导致我不得不在'代码'中逐行添加代码。我会学习降价格式,我想。
                • 在当前版本中,PuttyGen 将以正确的格式显示用于复制和粘贴的公钥。因此不再需要手动将 putty pub 密钥转换为正确的格式。
                • @ErikKalkoken 是的,公钥的复制粘贴对我有用。我不知道为什么保存公钥的格式不正确。我使用保存公钥按钮保存了公钥并将其复制到服务器。但是,这种格式并没有像核在他的回答中提到的那样工作。可悲的是,在弄清楚自己之前,我没有向下滚动到这个答案。但是感谢您的回答和您的评论。
                【解决方案16】:

                我有这个问题,sshd 只能从 authorized_keys2 读取。

                复制或重命名文件为我解决了这个问题。

                cd  ~/.ssh
                sudo cat authorized_keys >> authorized_keys2
                

                附:我正在使用来自 Windows 的 Putty,并使用 PuTTyKeygen 生成密钥对。

                【讨论】:

                  【解决方案17】:

                  我在尝试通过 Mobaxterm 登录时遇到了类似的问题。私钥是通过 puttygen 生成的。重新生成密钥对我来说很有帮助。

                  【讨论】:

                    【解决方案18】:

                    就我而言,是权限问题。

                    我将日志级别更改为DEBUG3,在/var/log/secure 中我看到了这一行:

                    Authentication refused: bad ownership or modes for directory
                    

                    谷歌搜索,我发现了这篇文章:

                    https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/

                    chmod g-w /home/your_user
                    chmod 700 /home/your_user/.ssh
                    chmod 600 /home/your_user/.ssh/authorized_keys
                    

                    基本上,它告诉我:

                    • 摆脱用户主目录的w组权限
                    • 将权限更改为.ssh 目录的700
                    • authorized_keys文件的权限更改为600

                    这行得通。

                    另一件事是,即使我启用了 root 登录,我也无法让 root 工作。最好使用其他用户。

                    【讨论】:

                    • 这个答案被低估了。被忽略的主目录权限可能会花费您一整天的时间来排除故障。
                    • 感谢您为我投票。我只是分享我得到的。
                    • 对于任何来到这里试图了解'bad ownership or modes for directory' 错误来自何处的人,我在这里发帖是因为我自己花了很多搜索才找到它。这是由sshd_config 中的StrictModes 设置强制执行的。不建议禁用,但对故障排除很有帮助。
                    【解决方案19】:

                    使用 Cpanel 时可以检查密钥是否被授权

                    SSH 访问 >> 公钥 >> 管理 >> 授权或取消授权。

                    【讨论】:

                      【解决方案20】:

                      我今天遇到了这个问题,我的问题是从文件中复制公钥时,还包含换行符。您可以在 vim 中使用 ":set list" 来查看所有隐藏的新行,并确保删除除最后一行之外的所有新行。另外,我的密钥一开始就缺少“ssh-rsa”。确保你也拥有它。

                      【讨论】:

                      • 这里类似:从 PuttyGen 复制时,我在“ssh-rsa”和密钥之后有新行。删除它们后,它起作用了。
                      【解决方案21】:

                      如果您在/var/log/secure 中收到此错误

                      错误:key_read:key_from_blob AA
                      AAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswD

                      表示你的key有空间,如果你在查看.ppk文件时通过puttgen生成key,会是这样的:

                      AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswD
                      al74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5
                      GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBC
                      gLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqz
                      xjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5L
                      VwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ==
                      

                      当你尝试粘贴它时,你会在读取密钥时出错,所以尝试编辑密钥并使其成为一行并尝试它

                      这应该看起来像什么

                      ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswDal74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBCgLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqzxjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5LVwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ== username@domainname

                      【讨论】:

                        【解决方案22】:

                        对我有用的是:

                        • 已停止 ec2 实例
                        • 分离卷
                        • 使用相同的密钥将卷与旧实例连接,并且能够通过 SSH 连接
                        • 将卷挂载到某个临时文件夹中
                        • 检查目录mount_point/home/ec2-user/.ssh/authorized_keys中的文件
                          • 理想情况下,此文件需要包含我们的关键信息,但对我而言,此文件为空
                        • 将旧实例的 authorized_keys 文件复制到新挂载的卷中
                        • 卸载设备
                        • 重新附加到原始 ec2 实例
                        • 启动它并让它通过健康检查

                        这次它对我有用。但是我不知道为什么在启动实例时它没有我的密钥文件信息。也检查这个链接https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm

                        【讨论】:

                          【解决方案23】:

                          在我的情况下,问题是这样的,在生成 ssh 密钥期间,我故意更改了密钥的默认目录。因此,我选择使用~/home/user/folder1/.ssh/authorized_keys,而不是使用位置~/.ssh/authorized_keys,为了使这些更改生效,我应该对这个文件/etc/ssh/sshd_config上的新位置进行相同的更改。但在我意识到这一点之前,我已经尝试了这里其他人建议的几种解决方案,包括将主文件夹的权限设置为 700 并将 .ssh 目录设置为 600

                          【讨论】:

                            【解决方案24】:

                            修复根挂载的步骤(我在更改 ec2-user 文件夹和授权密钥文件的权限时遵循了该步骤) 此过程类似于分离和连接笔式驱动器

                            以下是您可能会遇到的其他一些情况 -

                            1. 您正在使用 SSH 私钥,但对应的公钥不在 authorized_keys 文件中。
                            2. 您没有权限访问您的 authorized_keys 文件。
                            3. 您没有 .ssh 文件夹的权限。
                            4. 您的 authorized_keys 文件或 .ssh 文件夹命名不正确。
                            5. 您的 authorized_keys 文件或 .ssh 文件夹已被删除。

                            修复它们的步骤

                            • 停止有问题的 Ec2 实例
                            • 分离根卷 (/dev/sda1)
                            • 创建一个 ec2 实例或使用一个正在运行的实例
                            • 将分离的卷 (/dev/sdvf) 挂载到新的 ec2 实例

                            现在在你登录到新的 ec2 后运行以下步骤

                            • Lsblk 命令 - 列出所有可用的挂载
                            • 选择您从有问题的实例中卸载的挂载值
                            • 作为 ec2-user 运行“sudo mount /dev/mapper/rootvg-home /mnt” sudo mount /dev/mapper/rootvg-home /mnt
                            • 然后将目录更改为 /mnt
                            • 进行所有必要的更改

                            现在我们已经解决了我们面临的问题。主要是用户权限问题 - 卸载 /mnt 卸载它 - 现在转到控制台并指向附加到新实例的卷并将其分离 - 分离后,将其作为 /dev/sda1 附加到您的新卷上

                            这么说你应该可以成功登录了

                            【讨论】:

                              【解决方案25】:

                              根据我的经验,我建议你应该从 putty 生成密钥,而不应该从 linux 端生成。因为密钥将是旧的 PEM 格式。无论如何,只是我的建议。我按照以下步骤进行操作,并与我和我的团队合作良好。

                              1. 在本地使用 PuTTYGen.exe 生成密钥对(类型:RSA,长度:2048 位)。

                              2. 将私钥/公钥保存为您本地的“id_rsa.ppk/id_rsa.pub”文件。

                              3. 在本地创建“authorized_keys”文件,然后将“id_rsa.pub”中的公钥输入到“authorized_keys”。 请记住,内容必须以“ssh-rsa”和一行开头。

                              1. 使用 WinScp(或 putty 命令)将“authorized_keys & id_rsa.pub”从您的本地复制到您的 linux-user-home“/home/$USER/.ssh/”。

                              1. 运行这些命令:

                                chmod 700 .ssh

                                chmod 600 .ssh/authorized_keys

                                chown $USER:$USER .ssh -R

                              2. 通过在 PuTTY.exe 配置文件中加载私钥“id_rsa.ppk”来测试您的连接设置,然后点击打开(如果有,请输入您的密码)。

                              【讨论】:

                                【解决方案26】:

                                检查您的密钥,这应该是今天的 rsa (id_rsa.pub) 密钥,不再是 dss (id_dsa.pub) 密钥,使用 puttygen 0.70 并在要生成的密钥类型上选择 RSA,替换主机上的公钥~/.ssh/authorized_keys

                                【讨论】:

                                  【解决方案27】:

                                  运行 Windows 8.1 我遇到了server refused our key 问题。

                                  跟随指南:https://winscp.net/eng/docs/guide_windows_openssh_server 使用 Windows 登录 usernamepassword 很容易建立连接。但是,使用username 结合private key 进行身份验证时,响应为server refused our key

                                  让它与公钥一起工作归结为文件的权限: C:\ProgramData\ssh\administrators_authorized_keys

                                  这是一个有用的页面:https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps

                                  停止两个 OpenSSH 服务,然后用admin permissions 打开一个command prompt。然后运行: C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd

                                  注意:指定 exe 的完整路径,否则 sshd 会抱怨。 这将创建一个一次性使用的连接侦听器。 -ddd 是详细级别 3。

                                  建立连接后,扫描日志显示:

                                  debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
                                  debug3: Failed to open file:C:/ProgramData/ssh/administrators_authorized_keys error:2
                                  debug1: Could not open authorized keys '__PROGRAMDATA__/ssh/administrators_authorized_keys':
                                          No such file or directory
                                  

                                  必须创建文件:C:\ProgramData\ssh\administrators_authorized_keys 并将public key 文本复制到其中,例如:ssh-rsa AAAA................MmpfXUCj rsa-key-20190505 然后保存文件。我将文件保存为UTF-8BOM。没有测试ANSI

                                  然后再次运行一次性命令行,在日志中显示:

                                  debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
                                  debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.
                                          Authentication refused.
                                  

                                  S-1-5-11System 的名称。

                                  要修复Bad permissions,请右键单击administrators_authorized_keys 文件,转到Security Tab,单击Advanced 按钮并删除继承的权限。 然后删除除Windows登录用户名之外的所有Group or user names:,例如:YourMachineName\username username 的权限应该是 Read AllowWrite Deny 其他所有内容均未选中。文件的所有者也应该是YourMachineName\username

                                  这解决了问题。

                                  其他有用的链接:

                                  https://github.com/PowerShell/Win32-OpenSSH/releases下载OpenSSH-Win32.zip

                                  如何使用 WinSCPnet.dll 连接到 OpenSSH 服务器的 C# 示例:https://winscp.net/eng/docs/library#csharp

                                  这里是使用WinSCPnet.dll建立连接的代码sn-p:

                                  static void WinSCPTest() {
                                      SessionOptions ops = new SessionOptions {
                                          Protocol = Protocol.Sftp, 
                                          PortNumber = 22,
                                          HostName = "192.168.1.188", 
                                          UserName = "user123",
                                          //Password = "Password1",
                                          SshHostKeyFingerprint = @"ssh-rsa 2048 qu0f........................ddowUUXA="
                                      };
                                  
                                      ops.SshPrivateKeyPath = @"C:\temp\rsa-key-20190505.ppk";
                                  
                                      using (Session session = new Session()) {
                                          session.Open(ops);
                                          MessageBox.Show("success");
                                      }
                                  }
                                  

                                  SshHostKeyFingerprintSshPrivateKeyPath 替换为您自己的值。

                                  编辑:添加了 administrators_authorized_keys 文件权限的截图:

                                  OpenSSH SSH Server 作为服务运行时,只有System 应该有权限。但是,如果从命令提示符运行sshd.exe,则当前用户应该是唯一列出的用户(允许读取,拒绝写入)。

                                  【讨论】:

                                  • 你在这里做了很多有帮助的事情。首先在命令行上运行带有调试标志的 sshd。 Windows 服务系统日志显示很少,完全无法调试。其次,作为管理员的主要事实存在一个错误,该错误仅在 administrators_authorized_keys 文件中查找,而不是在授权密钥的预期用户 .ssh 文件夹中(每个人在 Windows 上运行 sshd 的悲伤点)。最后是 ProgramData 中的“ssh”文件夹!我想知道它把服务器证书等放在哪里。所以在挠了我一天左右的头之后,只有你在这里的信息对我有帮助。谢谢!
                                  • 这个答案是唯一一个在全新的 ec2 实例 windows 2019 免费层上为我工作的答案。
                                  【解决方案28】:

                                  添加密钥后,如果您使用的是 Amazon Linux 机器,请以 ec2-user 登录

                                  如果是 ubuntu 机器,则使用 ubuntu

                                  【讨论】:

                                    【解决方案29】:

                                    天哪,我花了好几天的时间试图解决这个问题。所以这对我有用。我像这样回到根折叠: cd /根/ mkdir .ssh 光盘.ssh chmod 700 .ssh nano -w 授权密钥 服务 ssh 重启 所以我使用root通过Putty进行日志记录并且它有效。因此,请尝试对您要在 putty 中使用的用户执行相同操作。

                                    【讨论】:

                                      【解决方案30】:

                                      就我而言,这是一个错误的用户:组归属。我解决了设置正确的用户和组:

                                      sudo chown [user]:[group] -R /home/[user]
                                      

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2013-01-12
                                        • 2018-08-10
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多