无论登陆
vps还是使用vscode的remote功能,都需要用到ssh登陆,但是由于机器多了,配置就变的麻烦了。下面把我遇到的问题整理一下遇到的问题:
- 家里一台Mac
- 一个ali的vps
- 一个学习科学用的vps
- 公司一台win一台Linux
- gitee有库
- GitHub有库
- 公司内网Gerrit
以上的这些都需要使用到
ssh进行连接,如果每台机器配置不同的key会很麻烦,所以我的方法是:- 每台服务器有唯一的一个key,
git库也拥有一个唯一的key
- 每台客户端PC的
.ssh共通,.ssh的目录里面保存所有服务器的私有key和配置文件
这样客户端无论怎么变,只要将
.ssh目录进行拷贝即可。在配置的过程中遇到了两个问题:
- 由于
ssh key是使用ssh-keygen生成,一些网上老的教程中,key发生迁移后需要使用ssh-add进行添加,但是会有一个文件,add的动作是基于每次ssh-keygen动态实例化才能成功,也就是说需要先ssh-keygen,才能进行ssh-add,简直麻烦到爆炸
- 由于公司是两台PC,平时都是win使用
vscode远程linux进行写代码,编译啥的会用Cygwinssh到linux,但是Cygwin的环境.ssh和win的.ssh位置不一样,想统一起来,结果都指向Cygwin的home,Cygwinssh到linux的时候很正常,不需要输入密码。但是使用vscode ssh的时候就提示坏的权限,然后需要输入密码。改了好久权限,不是Cygwin不好用,要不就是vscode不好用,简直是日了狗了。 最后放弃了,win放了一份key,Cygwin放了一份key,两处位置的key是相同的,只是拷贝了一遍。
配置其实非常简单,不要被网上的一些教程误导,一些csdn什么的博客里面的,都是这拷贝那拷贝的,乱炒一通,根本没用。
只需要在home路径下面的
.ssh文件夹中新建一个config的文件,内容:Host github.com HostName github.com User 你的github用户名 IdentityFile "~/.ssh/github_id_ed25519" Host 192.168.x.x HostName 192.168.x.x User linux主机用户名 IdentityFile "~/.ssh/ubuntu_id_ed25519"
🌟:上面的配置,可以写几个都行,上面的是我的举例。有两点需要注意:
- 如果是vscode的
ssh登陆Host和HostName需要写IP地址,除非你本地有hosts定向,没有的话,就写IP地址,要不就卡住
ed25519不是必须,可以使用rsa
