SSH 概念
SSH (Secure Shell) 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
Git 仓库克隆方式:https 和 ssh
- https 拿到 URL 即可随便 clone ,但是 push 需要验证用户名和密码
- ssh clone 之前必须配置 ssh 的 Key,但是在之后的 push,fetch 可以不验证用户名和密码的。
你必须是该项目的拥有者 ,否则你是为 remote 添加公钥的。如果你想要每次都输入账号密码才能进行 fetch 和 push 也可以另外进行设置。
如何配置 ssh 的 key
- 检查本地是否存在 id_rsa 和 id_rsa.pub 文件:若存在,则不需要重新生成 Key.
1 | cd ~/.ssh/ |
- id_rsa 私钥。保存在本地,作为 remote 的认证文件
- id_rsa 公钥。里面的内容全部复制,配置在远程 (remote) 仓库。
- 在本地生成一对 Key (私钥和公钥)
1 | ssh-keygen |
运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
此时,在 ~/.ssh/
目录下生成了两个文件 :id_rsa 和 id_rsa.pub, 私钥和公钥
- 输入下面的命令,将你的公钥推送到 remote 去。
1 | ssh-copy-id user@host |
或者 cat ~/.ssh/id_rsa.pub
将其内容手动复制到 remote
好了,从此在登录,就不需要输入密码了
- 将私钥保存至 Mac 的钥匙串
1 | ssh-add -K [path/to/your/ssh-key] |
首先得了解一件事:ssh-add 这个命令不是用来永久性的记住你所使用的私钥的。实际上,它的作用只是把你指定的私钥添加到 ssh-agent 所管理的一个 session 当中。而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了,session 会话也就失效了。
既然 ssh-agent 是个临时的,那么对于 Mac 来说,哪里可以永久存储的,显然就是 Keychain 了,在执行 ssh-add -K privateKey 后可以打开偏好设置中的 Keychain来观察一下前后的变化,是不是多出了 SSH 的条目.
- 编辑 ssh 的配置文件(ssh 的配置文件 config 有两个,一个用户的一个系统的。这里是用户配置。)
1 | vim ~/.ssh/config |
config 的配置格式如下:
1 | Host github # 别名 可以随便取 |
- 登录验证
1 | ssh -T git@github |
Hi kekemao00! You’ve successfully authenticated, but GitHub does not provide shell access.
如上显示,则大功告成!