配置多个ssh的副本


title: 配置多个ssh
tag:

  • linux
  • 工具

刚到公司是没有再重新配置ssh,导致了自己的github和公司gitlab提交的混乱。

这种情况我们可以分情况配置ssh

  1. 分别生成gitlab和github的ssh-key
$ ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/gitlab-rsa

在~/.ssh/目录会生成gitlab-rsa私钥和gitlab-rsa.pub公钥。 我们将id-rsa.pub中的内容粘帖到公司gitlab服务器的SSH-key的配置中。

$ ssh-keygen -t rsa -C "[email protected]" -f ~/.ssh/github-rsa

在~/.ssh/目录会生成github-rsa私钥和github-rsa.pub公钥。 我们将github-rsa.pub中的内容粘帖到github服务器的SSH-key的配置中。

在创建ssh-key的时候会有提示

Enter passphrase (empty for no passphrase):
//输入密语,可以为空
Enter same passphrase again:
//再次输入确认
  1. 将密钥加入到ssh-agent

    ssh-agent是用于管理密钥,通过ssh-add命令将两个将密钥加入到ssh-agent中,SSH可以和ssh-agent通信获取密钥,这样就不需要手工输入密码了。

    $ ssh-add ~/.ssh/gitlab-rsa
    $ ssh-add ~/.ssh/github-rsa
    

    如果运行ssh-add命令,遇到“Could not open a connection to your authentication agent.”提示。

    需要ssh-agent启动bash,运行以下命令,然后再重新执行ssh-add命令

    $ ssh-agent bash
    
  2. 创建并编辑config文件

    $ cd ~/.ssh/
    $ touch config
    

    在config中写入,并保存

    # gitlab
    Host gitlab.com
        HostName gitlab.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/github-rsa
    
    # 配置文件参数
    # Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
    # HostName : 要登录主机的主机名
    # IdentityFile : 指明对应的identityFile路径
    
  3. 测试是否生效

    $ ssh [email protected]
    

    出现以下提示即为成功

    The authenticity of host 'github.com (192.30.253.112)' can't be established.
    RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no)? 
    //输入yes,按回车
    Warning: Permanently added 'github.com,192.30.253.112' (RSA) to the list of known hosts.
    Permission denied (publickey).
    
# flag-api
git remote remove origin
git remote add origin [email protected]:546405040/flag-api.git

git push --set-upstream origin master #第一次可能需要

# xl
git remote remove origin
git remote add origin [email protected]:546405040/xl.git

git push --set-upstream origin master #第一次可能需要

gitlab

Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

github

Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github-rsa

zeno

Host 47.52.30.225
HostName 47.52.30.225
PreferredAuthentications publickey
IdentityFile ~/.ssh/zeno-rsa
#User git

阿里
Host code.aliyun.com
HostName code.aliyun.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitali-rsa

配置文件参数

Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件

HostName : 要登录主机的主机名

User : 用户名

IdentityFile : 指明对应的identityFile路径

今天处理 ssh连接至 ubuntu 服务器时,提示以下错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
da:f7:3e:ba:f7:00:e6:44:76:f2:58:6e:48:******.
Please contact your system administrator.
Add correct host key in /用户home目录/.ssh/known_hosts to get rid of this message.
Offending RSA key in /用户home目录/.ssh/known_hosts:1
RSA host key for ip地址 has changed and you have requested strict checking.
Host key verification failed.

经过google,出现这个问题的原因是,第一次使用SSH连接时,会生成一个认证,储存在客户端的known_hosts中。

可使用以下指令查看:
ssh-keygen -l -f ~/.ssh/known_hosts

由于服务器重新安装系统了,所以会出现以上错误。

解决办法
ssh-keygen -R 服务器端的ip地址

会出现以下提示:

Host 192.168.3.10 found: line 1 type RSA

/用户home目录/.ssh/known_hosts updated.
Original contents retained as /用户home目录/.ssh/known_hosts.old

push

重新连线,出现以下提示:
The authenticity of host '192.168.3.10 (192.168.3.10)' can't be established.
RSA key fingerprint is da:f7:3e:ba:f7:00:e6:44:76:f2:58:6e:48:****.
Are you sure you want to continue connecting (yes/no)?

输入yes确认即可连线成功。

作者:GkFool
链接:https://www.jianshu.com/p/04328ed5970e

你可能感兴趣的:(配置多个ssh的副本)