我已经在远程服务器上使用公钥认证一段时间了,用于远程 shell 和 sshfs 安装。强制卸载我的 sshfs 目录后,我注意到 ssh 开始提示我输入密码。我尝试从任何提及本地机器的地方清除远程 .ssh/authorized_keys,并且我从对远程机器的引用中清除了本地机器。然后我重复了我的 ssh-copy-id,它提示我输入密码,然后正常返回。但是你瞧,当我通过 ssh 连接到远程服务器时,仍然提示我输入密码。我对可能是什么问题有点困惑,有什么建议吗?
Bru*_*ger 43
sshd 对 $HOME、$HOME/.ssh(两个目录)和 $HOME/.ssh/authorized_keys 的权限感到奇怪。
我的一个 linux 机器最终在我的 $HOME 目录上获得了 drwxrwxrwx 权限。在我删除 $HOME 目录中其他组的“w”权限之前,Arch linux 机器绝对不会使用公钥登录。
尝试使 $HOME 和 $HOME/.ssh/ 对组和其他人具有更多限制性权限。看看这是否不会让 sshd 发挥作用。
小智 11
由于在谷歌搜索此行为时,这个问题出现在第一个搜索结果中,因此我还将添加我的解决方案:
\n\n就我而言,这与权限无关。出于任何原因(实际上我并没有费心找出原因,因为我找到了一个快速修复方法),在执行 ssh 命令时,程序没有查找正确的身份文件。\n一种解决方案是在远程服务器上手动添加 SSH 程序尝试使用的 SSH 密钥。可以通过在命令中添加 -v 来观察 SSH 程序在执行命令时做了什么:
\n\nssh -v username@your-host-ip-or-domain \n
Run Code Online (Sandbox Code Playgroud)\n\n然后,您只需在本地计算机上获取 SSH 程序尝试为其查找身份文件/私钥的任何公钥,例如在 Mac 上:
\n\ncat ~/.ssh/id_rsa.pub\n
Run Code Online (Sandbox Code Playgroud)\n\n...并将其添加到远程的authorized_keys文件中:
\n\n~/.ssh/authorized_keys\n
Run Code Online (Sandbox Code Playgroud)\n\n就我而言,另一个更好的解决方案是在本地 ssh 配置文件中添加自定义主机。在我的 Mac 上是:
\n\n/Users/my-user-name/.ssh/config\n
Run Code Online (Sandbox Code Playgroud)\n\n例如,您可以在这里添加如下内容:
\n\nHost mynewserver\n HostName some.IP.number.or.domain\n Port 20000 #if custom port is used and not the default 22\n User the_root\n PreferredAuthentications publickey\n IdentityFile ~/.ssh/id_rsa_for_my_new_server\n
Run Code Online (Sandbox Code Playgroud)\n\n然后你只需要执行:
\n\nssh mynewserver\n
Run Code Online (Sandbox Code Playgroud)\n\n...以及 Voil\xc3\xa0
\n我最近也遇到了这个问题。
通过修改$HOME
目录的权限来纠正它。但是,仅仅运行chmod g-w ~/
并不能解决问题。此外chmod g-w ~/
我还需要修改的权限others
在$HOME
运行目录chmod o-wx ~/
一起:
chmod g-w ~/
chmod o-wx ~/
Run Code Online (Sandbox Code Playgroud)
请注意,我不确定是否o-x
有必要,我只是为了预防而运行它。
归档时间: |
|
查看次数: |
44247 次 |
最近记录: |