如何设置公钥认证? [关闭]

Posted

技术标签:

【中文标题】如何设置公钥认证? [关闭]【英文标题】:How do I setup Public-Key Authentication? [closed] 【发布时间】:2010-09-05 15:43:54 【问题描述】:

如何为 SSH 设置公钥验证?

【问题讨论】:

【参考方案1】:

对于 windows this 是一个很好的介绍和指南

这里有一些不错的 ssh 代理,适用于 linux 以外的系统。

Windows - pageant OS X - SSHKeychain

【讨论】:

【参考方案2】:

如果你安装了 SSH,你应该可以运行..

ssh-keygen

然后执行这些步骤,您将拥有两个文件,id_rsaid_rsa.pub(第一个是您的私钥,第二个是您的公钥 - 您复制到远程机器的那个)

然后,连接到您要登录的远程计算机,到文件 ~/.ssh/authorized_keys 添加您的 id_rsa.pub 文件的内容。

哦,还有chmod 600 所有的id_rsa* 文件(本地和远程),所以没有其他用户可以读取它们:

chmod 600 ~/.ssh/id_rsa*

同样,确保远程~/.ssh/authorized_keys 文件也是chmod 600

chmod 600 ~/.ssh/authorized_keys

然后,当您执行ssh remote.machine 时,它应该询问您密钥的密码,而不是远程机器。


为了更好地使用,您可以使用ssh-agent 将解密的密钥保存在内存中——这意味着您不必每次都输入密钥对的密码。要启动代理,请运行(包括反引号,用于评估 ssh-agent 命令的输出)

`ssh-agent`

在某些发行版上,ssh-agent 会自动启动。如果你运行 echo $SSH_AUTH_SOCK 并且它显示了一个路径(可能在 /tmp/ 中)它已经设置好了,所以你可以跳过前面的命令。

然后添加你的密钥,你做

ssh-add ~/.ssh/id_rsa

并输入您的密码。它会一直存储,直到您将其删除(使用 ssh-add -D 命令,该命令会从代理中删除所有密钥)

【讨论】:

如果您必须创建 .ssh 文件夹,请不要像我一样将其设置为 600,否则您将度过难关。而是将其设置为 700。:-) 我可以使用为已知/配置的客户端生成的私钥从未知机器登录以与服务器通信吗?我的意思是,这个私钥是可移植的吗?如果有紧急需要,可以用来从其他机器向服务器验证我自己的身份吗?? @user01 可以,您可以将私钥复制到多个系统并访问另一个具有相应公钥的服务器。 @Charlie Gorichanaz:是不是反过来,我可以在服务器上生成一个密钥对并在我想连接到该服务器的所有其他机器上使用生成的公钥?跨度> 上传公钥到远程机器也可以由本地机器上的ssh-copy-id [-i identity] [user@]host处理。

以上是关于如何设置公钥认证? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 gitbash 生成多个 SSH 公钥并在 Windows 机器上配置这些公钥? [关闭]

如何向某人发送我的 SSH 公钥? [关闭]

xshell,putty远程连接Linux并使用密钥认证

Ansible 三(公钥认证)

Xshell5配置ssh免密码登录-公钥与私钥登录linux服务器(xshell如何登陆上阿里云服务器)

利用公钥认证登录远程服务器