概要
你是否有如下的尴尬局面:
添加一个新的仓库,推送GIT都要进行用户名和密码的输入。
新买了一台VPS服务器,又经常忘记密码。非常难受。
解决方案
使用 安全外壳协议SSH 可以在不安全的网络中为网络服务提供安全的传输环境。最常用的途径就是 SSH远程登录
登录就含有多种身份认证,
用户名+密码(常见)
非对称加密密钥。
非对称加密
也叫做:公开密钥加密。这个加密与解密的过程中,存在两个密钥;
私钥:非常重要,切勿保护好你的私钥,只能由你个人持有,不能外泄。
公钥:可以发放给任意你想要与之通信的设备。
公钥与私钥之间形成 N-1
多对一的关系,无论公钥被复制多少份,但是它所对饮的私钥永远只有一份,并且要安全保护在你的手里。
加密与解密
通过公钥加密后的数据,只有与之对应的私钥才能解开。其他私钥无法解开。
反过来。私钥加密的数据,所有的公钥都可以解开并查看到加密前的内容。
存储位置
一般公钥和私钥默认存储在:
1 | linux |
id_rsa
是私钥,id_rsa.pub
是公钥
windows一般隐藏了.ssh文件夹,通过设置 显示隐藏的文件夹
开始
通过 ssh-keygen
生成你的 公钥
与 私钥
这里使用 Windows
环境下的 Git-bash
进行生成,省去安装其他软件。后面需要配置Git 通过密钥进行登录,所以请确保你的环境下已经安装了 GIT
1 | check your version |
1 | root@ecs-41794810:~/sshtest# ssh-keygen -b 4096 |
输入命令后一路回车,使用默认的位置即可。Enter passphr
要求你输入一个密码,空着也行,输入一个也行,如果输入后,还请记清楚你的密码。
生成完成后,切记一定保护好你的私钥!!!
SSH Config
发送你的公钥到Git
注意:这里是公钥,不是私钥,别搞错了。
首先去Github,Gitee等地方配置你的公钥信息,后面要用作登录
这里以Github为例。打开如下链接
Sign in to GitHub · GitHub 点击 New SSH Key
将你公钥
的内容粘贴到这个位置。
保存即可。其他网站的配置都大同小异。
Copy到远程服务器
这里的远程服务器指的是,你买了一台VPS,或者是你手头有一台Linux需要通过SSHkey的方式链接。就需要做如下配置。
1 | ssh-copy-id yourname@host |
yourname
: linux上有多个用户,需要将你的公钥分给哪个用户?比如roothost: 你的服务器所在的IP, 可以是公网IP,或者是本地私有IP,或者域名
输入密码即可上传到远端服务器。
或者手动Copy也行, 将你的公钥放置到如下文件中,如有多个,换行放置。
1 | vim ~/.ssh/authorized_keys |
配置本地Config
本地 .ssh
文件夹下创建 config
文件
按照需要,加入所需要的内容
1 | # gitee |
Host: 配置一个别名,方便我们使用
User: 配置登录的用户名
Hostname: 设置远程登录主机的地址,IP或者域名
Port: 端口号,默认22端口
IdentityFile: 私钥文件的位置,我们使用了默认位置,就无需设置
愉快的使用
1 | 登录远程主机 |
配置Git使用,则需要将你仓库的地址修改为ssh的形式
1 | git remote rm origin |
以后不管换电脑还是什么。保存好你的 私钥文件与配置文件,即可忘掉那些琐碎的密码。
引用
https://zh.wikipedia.org/wiki/Secure_Shell
https://zh.wikipedia.org/wiki/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86
https://www.tecmint.com/configure-custom-ssh-connection-in-linux/