如果你采用一个密码,选择一个 强大的 并将它安全地存储在一个密码管理器。
你也可以把它写在一张纸上并保持在一个安全的地方。 如果你选择不与密码保护的关键,然后按下 返回 当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
从这里去哪里?