我正在使用ssh-keygen
它在 Ubuntu 10.10 上生成密钥,然后使用它ssh-copy-id
将该密钥复制到运行 10.04 的两台远程机器(一台桌面,另一台服务器)。
但问题是:我可以通过 SSH 进入桌面而无需密码,但过了一段时间后,系统又要求我输入密码。服务器总是要求输入密码,并且从不让我用密钥登录。
我已经检查了所有主机上.ssh
文件夹、authorized_keys file
我的id_dsa
和我的权限id_dsa.pub
,它们与Ubuntu 文档建议。我甚至用scp
和喘气将文件和文件夹的权限设置为 777,以排除任何权限问题。
在我转行成为一名插花师之前,是否有人有在 Ubuntu 上设置 SSH 密钥以实现无密码 SSH 访问的万无一失的方法?
答案1
首先,我建议,如果可以的话,删除+清除,然后在三台机器上重新安装 openssh-client/server,并删除每个 ~/.ssh,这样您就可以从干净的情况开始。
接下来,按照ubuntu 维基页面更具体地讨论 ssh 密钥配置。
最后,请记住以下问题:Debian ssh 维基:
如果组或世界对远程计算机上的主目录具有写权限,则无密码登录不起作用。
答案2
ssh 的运行由几十个配置文件组成的曲折迷宫控制,这些配置文件分布~/.ssh
在/etc/ssh
不同的客户端和服务器机器上。
并且可插入式身份验证模块 ( man 7 PAM
) 也加入了进来,为您提供额外的帮助。
如果有人能解释所有这些交互机制的精确语义,我将给他五分钱,因为我从来没有花一天时间去弄清楚它们。
答案3
我没有更改主文件夹的权限,而是更改 ~/.ssh 文件夹的权限,从而解决了我的问题这。
答案4
http://linuxproblem.org/art_9.html
以下是我在 16.04 上的工作
你的目标
您想使用 Linux 和 OpenSSH 来自动执行任务。因此,您需要从主机 A / 用户 a 自动登录到主机 B / 用户 b。您不想输入任何密码,因为您想在 shell 脚本中从 a 调用 ssh。
怎么做
首先以用户a身份登录A,生成一对认证密钥,不需要输入密码:
a@A:~> ssh-keygen -t rsa 生成公钥/私钥 rsa 密钥对。 输入要保存密钥的文件 (/home/a/.ssh/id_rsa): 创建目录 '/home/a/.ssh'。 输入密码(空表示无密码): 再次输入相同的密码: 您的身份已保存在 /home/a/.ssh/id_rsa 中。 您的公钥已保存在 /home/a/.ssh/id_rsa.pub 中。 密钥指纹为:3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A 现在使用 ssh 在 B 上以用户 b 身份创建目录 ~/.ssh。(该目录可能已经存在,这没关系):
a@A:~> ssh b@B mkdir -p .ssh b@B 的密码:最后将 a 的新公钥附加到 b@B:.ssh/authorized_keys 并最后一次输入 b 的密码:
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys' b@B 的密码: 从现在开始你可以以 a 的身份从 A 登录到 B,无需密码:
a@A:~> ssh b@BA 我们的一位读者指出:根据您的 SSH 版本,您可能还需要进行以下更改:
将公钥放入.ssh/authorized_keys2 将.ssh的权限改为700 将.ssh/authorized_keys2的权限改为640