Ubuntu 16.04下配置SSH免密码登录实践亲测(2)

如果你采用一个密码,选择一个 强大的 并将它安全地存储在一个密码管理器。
你也可以把它写在一张纸上并保持在一个安全的地方。 如果你选择不与密码保护的关键,然后按下 返回 当ssh
- keygen问道。

密钥加密级别

注意:默认是一个2048位的密钥。 你可以增加这4096位- b旗(增加了比特很难破解密钥通过蛮力方法)。

ssh-keygen -t rsa -b 4096

密码身份验证

公共密钥身份验证的主要问题是,你需要一个安全的方式得到公钥到电脑之前,您可以登录。
如果你只会使用一个SSH密钥登录自己的电脑从其他一些电脑(比如登录你的电脑从你的笔记本电脑),你应该复制你的SSH密钥在记忆棒,和 禁用密码身份验证 完全。
如果你想从其他电脑登录时间(如一个朋友的电脑),确保你有一个 强密码 。

传输客户端主机的关键

您需要转移到主机的关键是公众。 如果你能通过SSH登录到电脑使用一个密码,你可以转移你的RSA密钥从自己的电脑执行以下操作:

ssh-copy-id <username>@<host>

在哪里 <用户名> 和 <主机> 应该取代了你的用户名和计算机名你转移你的关键。

由于 这只虫子 ,你不能指定一个端口,而不是标准的端口22。
你可以在这通过发出命令: ssh-copy-id”<用户名> @ <主机> - p < port_nr >”。
如果您正在使用标准端口22,你可以忽略这一建议。

另一个替代方法是将公钥复制文件到服务器并手动连接到authorized_keys文件。
这是明智的,第一:
cp authorized_keys authorized_keys_Backup
cat id_rsa.pub >> authorized_keys

你可以确定这个工作做:

ssh <username>@<host>

应该提示您输入您的密钥的密码:

用户输入密码键“/ home / < > / . ssh / id_rsa”:

输入你的密码,并提供 主机 被配置为允许基于登录,然后,你应该像往常一样登录。

故障排除

加密的主目录

如果你有一个加密的主目录,SSH无法访问你 authorized_keys 加密文件,因为它是在你的家目录和你身份验证后才可用。
因此,SSH将默认密码身份验证。

为了解决这个问题,创建一个文件夹你家外面命名 /etc/ssh/
<用户名> (“<用户名>”替换为实际的用户名)。 这个目录应该755权限,属于用户。
移动authorized_keys 文件。
的 authorized_keys 文件应该有644权限,属于用户。

然后编辑你的 /etc/ssh/sshd_config 并添加:
AuthorizedKeysFile    /etc/ssh/%u/authorized_keys

最后,重新启动ssh:
sudo service ssh restart

下次你与SSH你应该不需要输入您的密码。

username@host的密码:

如果你不提示输入密码,而得到的

username@host的密码:

用密码登录提示像往常一样,然后继续读下去。 有几件事可以阻止这个工作容易如上所述。
然而,在默认的Ubuntu安装上面的示例应该工作。 如果不是,那么检查以下条件,因为它是最常见的原因:

在主机电脑,确保 /etc/ssh/sshd_config 包含以下行, 注释 ;

PubkeyAuthentication yes
RSAAuthentication yes

如果不是,将它们添加或取消他们,重启OpenSSH,并再次尝试登录。
如果你得到了 密码 现在提示,那么恭喜你,你登录一个关键!

没有权限(publickey)

如果你确定你正确配置 中 复制你的身份证,你的私钥 .
ssh 目录,并且仍然得到这个错误:

没有权限(publickey)。

很有可能,你 /home/<用户> 或 ~
/ . ssh / authorized_keys OpenSSH权限太开放的标准。
你可以摆脱这个问题通过发出以下命令:

chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

错误:使用密钥签署代理承认失败。

这个错误发生在客户端的ssh-agent还没有管理的关键。 发出以下命令来解决:

ssh-add

这个命令应该进入后您的公钥拷贝到主机电脑。

调试和解决更多的问题

文件和文件夹的权限对这个工作是至关重要的。 你可以从客户端和服务器端调试信息。

如果你认为你已经正确地设置它,但仍要求密码,试着启动服务器调试输出到终端。

sudo /usr/sbin/sshd -d

连接和发送信息到客户端终端

ssh -v ( or -vv) username@host's

从这里去哪里?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12477.html