Mac上配置SSH - 多个SSH
第一做个说明
生成一对默认的私钥公钥,私钥自己客户端留着用,公钥可以给多个平台用。
多对私钥公钥,主要是应对一个平台多个账号的情况。当然你想每个平台使用不同的私钥公钥也是可以的。
多次生成私钥公钥需要自己重新命名,否则会覆盖之前的。
进入 用户/.ssh 目录
$ cd ~/.ssh
如果找不到目录或者目录中没有东西,证明以前没有生成过。
或者直接使用命令来查看
$ ls -al ~/.ssh # Lists the files in your .ssh directory, if they exist
检查目录列表,看看您是否已经拥有公共SSH密钥。默认情况下,GitHub受支持的公钥的文件名如下之一。
id_rsa.pub id_ecdsa.pub id_ed25519.pub
提示:如果您收到~/.ssh不存在的错误,则在默认位置没有现有的SSH密钥对。您可以在下一步创建新的SSH密钥对。
两种方式,一种是生成的时候直接添加好路径;另一种是不带路径,需要第二步添加路径或使用默认路径。
$ ssh-keygen -t rsa -C "youremail@yourcompany.com" -f ~/.ssh/id_rsa_github
代码参数含义:
-t 指定密钥类型,默认是 rsa ,可以省略。
-C 设置注释文字,列如邮箱。
-f 指定密钥文件存储文件名。
$ ssh-keygen -t rsa -C "youremail@xxx.com"
以上代码省略了 -f 参数,因此,运行上面那条命令后会让你输入一个文件名,用于保存刚才生成的 SSH key 代码。
按回车后:
Generating public/private rsa key pair. Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): id_rsa_github(取个名字) Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in id_rsa_github. Your public key has been saved in id_rsa_github.pub.
最好每次生成时都给SSH Key取个名字,这样后面在管理时自己也一目了然。我这里的格式是id_rsa_项目名_git提供方,我生成的所有key都遵循这个规则命名。提议你也有你自己的一种命名方式,并且保持统一。如果不取名字,默认的是id_rsa,如果后面生成时不命名,会把这个覆盖掉。密码可以不设置,免得每次提交时还要输入一次,安全性自己衡量吧。第一次生成key时,会在~目录下创建一个.ssh目录。
附:
键入ssh-keygen -t,然后是键类型和可选注释。此注释包含在创建的.pub文件中。您可能想使用电子邮件地址进行注释区分。
例如,对于ED25519:
ssh-keygen -t ed25519 -C "<comment>"
对于2048位RSA:
ssh-keygen -t rsa -b 2048 -C "<comment>"
https://docs.gitlab.com/ee/ssh/#add-an-ssh-key-to-your-gitlab-account
ssh服务器默认是去找id_rsa,目前需要把这个key添加到ssh-agent中,这样ssh服务器才能认识id_rsa_TestSSH_github。
在后台启动ssh-agent。
$ eval $(ssh-agent -s) > Agent pid 59566
根据您的环境,您可能需要使用其他命令。例如,在启动ssh-agent之前,您可能需要通过运行sudo -s -H来使用root访问,或者您可能需要使用exec ssh-agent bash或exec ssh-agent zsh来运行ssh-agent。
如果您使用的是macOS Sierra 10.12.2或更高版本,则需要修改~/.ssh/config文件,以自动将密钥加载到ssh代理中,并将密码存储在钥匙串中。
第一,检查您的~/.ssh/config文件是否存在于默认位置。
$ open ~/.ssh/config > The file /Users/you/.ssh/config does not exist.
如果文件不存在,请创建文件。
$ touch ~/.ssh/config
打开您的~/.ssh/config文件,然后修改文件以包含以下行。如果您的SSH密钥文件的名称或路径与示例代码不同,请修改文件名或路径以匹配当前设置。
Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa_github
注意:如果您选择不向密钥添加密码,则应省略UseKeychain行。
注意:如果您看到这样的错误
/Users/USER/.ssh/config: line 16: Bad configuration option: usekeychainHost *部分添加额外的配置行:
Host *
IgnoreUnknown UseKeychain
注意:关于config文件,同时参考下列文件
将不同账号的工程图服务器与ssh-key关联
# 添加config配置文件 # 配置文件参数 # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件 # HostName : 要登录主机的主机名 # User : 登录名 # IdentityFile : 指明上面User对应的identityFile路径 #thub user(first@email.com) Host github1 HostName git.some.com/ User git IdentityFile /Users/xxx/.ssh/id_rsa # second user(second@email.com) # 建一个github别名,新建的帐号使用这个别名做克隆和更新 Host github2 HostName github.com User git IdentityFile /Users/xxx/.ssh/id_ras_bill_github
另一个例子
# # Main gitlab.com server # Host gitlab.com RSAAuthentication yes IdentityFile ~/my-ssh-key-directory/my-gitlab-private-key-filename User mygitlabusername
另一个例子
# # Our company s internal GitLab server # Host my-gitlab.company.com RSAAuthentication yes IdentityFile ~/my-ssh-key-directory/company-com-private-key-filename
另一个例子
# GitLab.com Host gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa # Private GitLab instance Host gitlab.company.com PreferredAuthentications publickey IdentityFile ~/.ssh/example_com_rsa
另一个例子
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa
第一,检查您的~/.ssh/config文件是否存在于默认位置。
$ open ~/.ssh/config > The file /Users/you/.ssh/config does not exist.
将您的SSH私钥添加到ssh代理中,并将密码存储在钥匙串中。如果您使用其他名称创建了密钥,或者如果您正在添加具有不同名称的现有密钥,请将命令中的id_rsa_github替换为私钥文件的名称。
$ ssh-add ~/.ssh/id_rsa_github
即ssh-add <directory to private SSH key>
如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令:
$ ssh-agent bash
然后再运行ssh-add命令。
查看添加结果
ssh-add -l
补充:
# 可以通过 ssh-add -l 来确私钥列表 $ ssh-add -l # 可以通过 ssh-add -D 来清空私钥列表 $ ssh-add -D
当然可以直接打开刚生成的公钥文件id_rsa_github.pub文件,复制全部内容去平台Add SSH Key;也可以使用命令复制公钥文件内容贴到平台 Add SSH Key。
附:使用命令复制
将SSH公钥复制到剪贴板上
$ pbcopy < ~/.ssh/id_rsa_github.pub # Copies the contents of the id_rsa_github.pub file to your clipboard
提示:如果pbcopy不起作用,您可以找到隐藏的.ssh文件夹,在您最喜爱的文本编辑器中打开文件,并将其复制到剪贴板。
其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。
这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如github2,那么原地址是:git@github.com:username/Mywork.git,替换后应该是:github2:username/Mywork.git。
测试一下
$ ssh -T github2 Hi 0xJoker! You ve successfully authenticated, but GitHub does not provide shell
输入以下命令测试
$ ssh -T git@github.com # Attempts to ssh to GitHub
您可能会看到这样的警告:
> The authenticity of host github.com (IP ADDRESS) can t be established. > RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. > Are you sure you want to continue connecting (yes/no)?
验证您看到的消息中的指纹是否与GitHub的RSA公钥指纹匹配。如果是这样,则键入yes:
> Hi username! You ve successfully authenticated, but GitHub does not > provide shell access.
您可能会看到以下错误信息:
... Agent admitted failure to sign using the key. debug1: No more authentication methods to try. Permission denied (publickey).
这是某些Linux发行版的已知问题。有关更多信息,请参阅“错误:代理承认未能签名”。
验证生成的消息是否包含您的用户名。如果您收到“permission denied【权限被拒绝】”消息,请参阅“Error: Permission denied (publickey)【错误:权限被拒绝(公钥)”】。
常常与会遇到下面这种情况,我也很纳闷,每次都解析到不到域名和地址
ssh: Could not resolve hostname git.oschina.net: nodename nor servname provided, or not known
查资料之后的解决办法是:
step1.ping address
获取到对于地址的ip
step2. 在/etc/hosts中添加一行如下:
ip addressxxxxxxxxxx
这样就可以玩起来了。
参考:Git配置多个SSH-Key https://gitee.com/help/articles/4229#article-header0
收集的错误解决方案,希望能帮到你:
如何解决git push/pull操作时出现的Operation timed out
https://segmentfault.com/a/1190000037797501
gitlab ssh clone问题解决
https://www.cnblogs.com/newalan/p/9286458.html
错误:权限被拒绝(公钥)
https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
 ¥89.76
 
                ¥89.76
            【YourCee】STM32F405RGT6(标准版)开发板系统板单片机核心板
 ¥33.79
 
                ¥33.79
            【YourCee】STM32F103C8T6(标准版)开发板系统板单片机核心板
 ¥389.66
 
                ¥389.66
            Wio Lite AI STM32H725AE AI视觉开发板套件 DCMI摄像头和RGB LCD
 ¥99.26
 
                ¥99.26
            ESP8266WIFI十六路24V继电器模块ESP12F开发板二次开发DC24V供电
 ¥62.40
 
                ¥62.40
            ESP32-C3-DevKitM-1开发板模块搭载ESP32-C3-MINI-1模组
 ¥799.00
 
                ¥799.00
            树莓派Raspberry Pi 400个人 电脑4B开发板官方套件键盘PC一体机