我有一个 Github 存储库,我想从两台不同的 Linux 机器访问。
对于第一台机器,我按照Github 的说明生成 SSH 密钥,并将生成的公钥添加到 Github。这个客户端工作正常。
对于第二个客户端,我/home/{user}/.ssh/id_rsa从第一个客户端复制了文件。我认为这可能就是我所要做的,但是当我尝试连接时,我收到“权限被拒绝(公钥)”。
我错过了什么?
Jer*_*use 44
多个客户端应该可以使用相同的 SSH 密钥。我有不同网络的不同 SSH 密钥,它们实际上存储在我从几台不同的计算机上使用的加密 USB 驱动器上,没有任何问题。
SSH 对文件权限非常挑剔,所以我会首先检查从/home/{user}所有权限到id_rsa文件本身的所有权限。
SSH 并不真正关心组或世界写入权限,因此请确保您chmod go-w的主目录和~/.ssh初学者目录。我还要确保它们归您的用户所有chown ${USER}:${USER}。
对于 SSH 密钥本身,我chmod 600...
如果您愿意,我在另一个 SSH 问题的回答中提供了有关如何管理 SSH 密钥的其他信息。
如果您从 Github 端获得权限被拒绝,则可能是它没有选择您复制的 SSH 密钥文件,而是系统默认值。解决此问题的一个简单方法是创建一个~/.ssh/config文件并将以下内容放入其中:
Host github.com
Hostname github.com
User git
IdentityFile ~/.ssh/yourkeyfile
Run Code Online (Sandbox Code Playgroud)
这将强制您的 SSH 客户端仅将该密钥用于 github.com。
希望这可以帮助。
小智 5
我知道这是老了,但认为我会指出你还需要将复制公开密钥到第二客户端
(或使用 ssh-keygen -y -f ~/.ssh/id_rsa_.. > ~/.ssh/id_rsa...pub 重新计算)
来自 [1]:
公钥认证方式:“publickey”
唯一需要的身份验证“方法名称”是“公钥”
身份验证。所有实现都必须支持这种方法;
然而,并非所有用户都需要拥有公钥,而且大多数本地
策略
在不久的将来不太可能要求对所有用户进行公钥认证。使用这种方法,拥有私钥作为
身份验证。 此方法通过发送使用
用户私钥创建的签名来工作。 服务器必须检查密钥
是否是用户的有效身份验证器,并且必须检查
签名是否有效。如果两者都成立,则必须
接受认证请求;否则,它必须被拒绝。请注意,服务器可能
需要在成功认证后进行额外的认证。
您的 ssh 客户端通过将公钥(上面以粗体引用的签名)发送到服务器来开始身份验证。如果公钥是授权密钥,服务器会向您的客户端发送一个随机会话 ID。然后,您的客户端使用私钥对该会话 ID 进行编码,并将其发送回服务器。服务器使用公钥对该会话 ID 进行解码,如果它与原始会话 ID 匹配,则对您的客户端进行身份验证。
[1] [ http://www.openssh.org/txt/rfc4252.txt][1]
| 归档时间: |
|
| 查看次数: |
66970 次 |
| 最近记录: |