便捷你的SSH

便捷你的SSH

当有两台或以上云服务器的时候,每次登录都要

1
2
$ ssh <user>@<hostname>  [-p ...]
password: ******

这样会造成很多不必要的麻烦——每次都要输入用户和密码,于是我们通过配置ssh-key来认证服务器。

使用ssh-keygen生成ssh-key密钥对

1
$ ssh-keygen

使用ssh-copy-id

ssh-copy-id可以将上面生成的ssh-key复制到服务器,具体用法如下

1
2
$ ssh-copy-id -i <identity_file> <user>@<hostname>
password: ******

在执行完成后就可以直接访问服务器而免去了输入密码的烦恼。

使用ssh-config

虽然免去了输入密码的烦恼,但我们每次还是要输入user和hostname,我们可以通过配置一个config文件来达到更简单的目的。

编辑文件

1
$ vim ~/.ssh/config
1
2
3
4
Host aliyun
HostName ***.***.***.***
IdentityFile ~/.ssh/id_rsa
user root

其中Host是别名,HostName是服务器地址,IdentityFile是私钥文件,user是要登录的用户。
于是只需要

1
$ ssh aliyun

就可以直接连接到服务器了。

github使用多个私钥

虽然推荐一个用户只拥有一对密钥,但有时也会出现一台机器上有多个github用户的时候,如果不配置,默认就是用~/.ssh/id_rsa这个私钥,如果不区分,就可能没有权限push到指定的仓库。

比如,现在有2个github用户,每个用户有一个仓库,并且有两对ssh-key,两把ssh-key的公钥都已经放在了github相应的账户中。

编辑config文件

1
$ vim ~/.ssh/config
1
2
3
4
5
6
7
8
9
Host user1
HostName github.com
IdentityFile ~/.ssh/key1
user user1

Host user2
HostName github.com
IdentityFile ~/.ssh/key2
user user2

此时的Host任意命名即可,看到,虽然我们配置了两个HostName都是github.com,但是它们对应不同的user。

使用时,在github的remote url中,指定相应用户即可。

例如

1
git@github.com:user1/project1
作者

Exqlnet

发布于

2019-06-13

更新于

2023-10-15

许可协议

评论