所以我的理解是ssh-keygen
是OpenSSH提供的许多命令之一。
使用ssh-keygen
生成私钥/公钥对时,我知道您可以将公钥放到远程服务器上(~/.ssh/authorised_keys
内)并且它允许您ssh到该服务器
但似乎有两种不同的生成密钥对的方法,因为你可以单独使用ssh-keygen
,当你cat
公钥时你会看到一些东西像:
ssh-rsa XXXX User@ComputerName
User@ComputerName
对我而言M@Marks-MBP.default
看起来像-C
。
另一种方法是使用User@ComputerName
注释标记(GitHub建议这样做)。似乎它不会使用-C
,而是使用您的电子邮件地址代替它(或者您恰好使用的任何'评论')。
我是否正确地认为,对于SSH进入服务器,用于登录的用户名是公钥中-C
注释设置的用户名?
因此,如果我根本不使用M@Marks-MBP.default
,那么它最终会生成一个M
的公钥。然后我假设用户名是-C "bingbop"
。
但如果我使用bingbop
,那么我假设SSH的用户名为-C
。
这是对的吗?
此外,是否有任何技术原因GitHub建议使用git@github.com:<user>/<repo>.git
来指定您的电子邮件地址,而不是将该标志关闭?
我猜测当您尝试克隆或推送到您的仓库(使用他们的NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData
options:NSJSONReadingMutableContainers
error:&error];
_currentVideoId = json[@"id"];
协议)时,它无法仅通过公钥识别您,它需要将注释设置为您的GitHub电子邮件地址
答案 0 :(得分:1)
该评论仅供参考;它与Git已知的用户名无关。当你ssh到github时,它会将公钥与你的存储库中的私钥相匹配,因此只知道与之关联的用户。
答案 1 :(得分:0)
我是否正确地认为,对于SSH进入服务器,用于登录的用户名是公钥中设置-C注释的用户名?
没有。密钥的注释字段实际上只是:一个(可选)注释,按照惯例通常设置为您的电子邮件地址,但如果未指定,则默认为user@host
。
通过SSH登录时使用的用户名与该评论字段无关或来自该评论字段。
此外,GitHub是否有任何技术原因建议使用-C来指定您的电子邮件地址,而不是将该标志关闭?
是的,原因是user@host
的默认值很少向您提供公钥的人提供有用的信息。另一方面,您的电子邮件地址是更有价值的信息。
我猜测当你尝试克隆或推送你的repo(使用他们的git@github.com:/ .git协议),它无法单独通过公钥识别你,它需要评论设置为您的GitHub电子邮件地址。
GitHub 可以单独通过提供的密钥识别您,因为它在所有GitHub用户中都是唯一的。在您提供的URI语法中,git
之前的@
是提供给SSH的用户名。因此,GitHub为其所有用户使用通用用户名git
,并通过他们提供的密钥识别个人用户。