初闻
在使用github中见过的ssh公钥私钥、在无人小车实验课上见过的登录指令ssh dashgo@xxxx等等操作。不知道是个啥东西
了解
为什么github要用ssh?其实它的作用就是在上传和下载时,在要用到的远程仓库中添加了ssh密钥,在上传和下载时就不用来回输入用户名和密码了。这样方便了很多,前提是你的远程仓库支持ssh密钥功能。而github是支持的。
ssh服务认证有两种方式,一种是基于口令的,一种是基于密钥的安全认证。基于口令的就是说,只要知道服务器的ssh连接账号和密码(口令),就可以通过ssh客户端登录到这台远程主机。而密钥认证:依靠密钥,就需要先创建一对密钥对,公钥放在远程端/目标服务器上,私钥放在客户端机器上。如果想要连接带有公钥的ssh服务器,客户端的ssh软件就会向ssh服务器发出请求,请求用用户的密钥进行验证。首先ssh服务器会在连接的家目录下寻址事先放进去的公钥,把他和用户发来的私钥对比。如果一致,ssh服务器就用公钥加密一串随机字符发给客户端。客户端得到加密信息后用密钥解开,在发送给ssh服务器验证。
使用
怎么创建一对ssh密钥?
指令:ssh-keygen -f fileName -t rsa -C "dequan@example.com"
-f:指定生成的文件名字 -t:指定认证方式 -c:指定公钥备注信息
然后就会默认在用户家目录下的隐藏文件夹中。
私钥默认会被保存在 ~/.ssh/id_rsa
公钥默认会被保存在 ~/.ssh/id_rsa.pub
然后将公钥问及爱你id_rsa.pub拷贝到服务器端的root用户家目录下的.ssh目录下,将拷贝过去的文件内容追加到~/.ssh/authorized_keys文件里,如果没有就创建一个该文件。
然后回到客户端进行远程SSH连接,执行如下指令如:root为登录的用户名,host 登录的主机。
ssh root@172.16.1.31
总结
1) 如果我们要进行免密码的SSH连接,那么在创建密钥对的时候不输入任何密码就可以了。
2)SSH基于密钥的安全认证的本质其实就是将密钥对中的公钥里的内容拷贝到对方服务器的用户家目录下的.ssh目录里的authorized_keys文件里。
3)你想要和对方服务器的哪个用户进行密钥对认证,那么你就要把公钥拷到对方该用户的家目录下的.ssh目录里的authorized_keys文件里(如果是想和普通用户进行密钥对登录,需要拷贝到/home目录下的该用户家目录下。)
4)所以你把公钥放github上,这样你每次推送的时候git就匹配你们的密钥,来验证合法性,然后允许推送。
网友评论