便捷你的SSH
2019-04-20 本文已影响0人
Exqlnet
当有两台或以上云服务器的时候,每次登录都要
$ ssh <user>@<hostname> [-p ...]
password: ******
这样会造成很多不必要的麻烦——每次都要输入用户和密码,于是我们通过配置ssh-key来认证服务器。
使用ssh-keygen生成ssh-key密钥对
$ ssh-keygen
一路回车即可
使用ssh-copy-id
ssh-copy-id可以将上面生成的ssh-key复制到服务器,具体用法如下
$ ssh-copy-id -i <identity_file> <user>@<hostname>
password: ******
在执行完成后就可以直接访问服务器而免去了输入密码的烦恼。
使用ssh-config
虽然免去了输入密码的烦恼,但我们每次还是要输入user和hostname,我们可以通过配置一个config文件来达到更简单的目的。
编辑文件
$ vim ~/.ssh/config
Host aliyun
HostName ***.***.***.***
IdentityFile ~/.ssh/id_rsa
user root
其中Host是别名,HostName是服务器地址,IdentityFile是私钥文件,user是要登录的用户。<br />于是只需要
$ ssh aliyun
就可以直接连接到服务器了。
github使用多个私钥
虽然推荐一个用户只拥有一对密钥,但有时也会出现一台机器上有多个github用户的时候,如果不配置,默认就是用~/.ssh/id_rsa这个私钥,如果不区分,就可能没有权限push到指定的仓库。
比如,现在有2个github用户,每个用户有一个仓库,并且有两对ssh-key,两把ssh-key的公钥都已经放在了github相应的账户中。
编辑config文件
$ vim ~/.ssh/config
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中,指定相应用户即可。
例如
git@github.com:user1/project1