今天要来介绍一些SSH的操作及相关指令,一般我们要连结到远端server通常都要透过git push origin master,这种方式需要登入帐密,且容易被骇客盗用,也较为複杂,而SSH就可以避免这些问题。
SSH机制:
1.Local端也就是我们会有两把key,分别为public key, private key
,而我们将public key传至server端,所以server端会有一把public key。
2.当Local端发起SSH连接以后,server会回传一段random message给Local端。
3.而我们在收到message后,利用private对message去做加密,以后再回传给远端,远端再用public key去解密,如果message吻合,则完成SSH连接。
详细流程如下图:
而我们在Git实际操作一下。
1.cd ~/.ssh : 首先先检查ssh key是否存在
如果存在
直接通过 ssh-key =>ssh-keygen
来产生ssh。
如果不存在
,我们就利用ssh-keygen -t rsa -C "your_email@youremail.com
":产生一个新的SSH key。
此时去存在ssh key的目录(cd .ssh/)可发现有两个file,一个为id_rsa(private key)、另一个为id_rsa.pub(public key)。
2.再来,我们将local端所产生的public key传至远端server,ssh-copy-id -i ~/.ssh/mykey user@host
:可将local端的public key 传至指定的server端
,这时候可利用ssh (远端server),发现已经不需再次输入密码登入了。
如何将SSH public key传至远端github呢?
1.首先先进入setting,里面有SSH and GPG Key的option,点选进去可以去new 一个 key。
2.接着more id_rsa.pub获取local public key的资料并贴到github new SSH key的地方。
但此时再次git push origin master,发现仍然需要输入密码,是因为我们这个local仓库是经由https git clone来的,所以我们仓库预设是由Https做验证,他不会走SSH。
3.我们可以利用vim .git/config 更改资料中url,至github点选clone地方将 clone with https 改为 clone with ssh并将其url 覆盖上去即可。