假设有两台机器,分别是:
源机器:主机A(hostA),ip:198.168.0.1
目标机器:主机B(hostB),ip:192.168.0.2
源机器想要使用ssh-key免密连接到目标机器,就要先了解ssh-key免密连接的原理(见下图)。
理解了上面的原理图,剩下要做的,无非就是两件事:
(一)在源机器创建ssh-key密钥对
(二)将ssh-key中的公钥写入到目标机器的授权密钥文件里
第(一)件事很简单:要在源机器(即主机A,ip:192.168.0.1)生成ssh-key密钥对,可以通过ssh-keygen指令(windows机器可以使用git客户端的git-bash.exe)。
讯享网

三次回车后,可以在当前用户home目录的.ssh文件夹(即~/.ssh/)找到该ssh-key密钥对:id_ed25519 和 id_ed25519.pub。其中带.pub后缀的为公钥,不带.pub后缀的为私钥。这两个文件的内容都是文本,可以编辑和查看。
第(二)件事也很简单:要完成目标机器(即主机B,ip:192.168.0.2)对源机器(即主机A,ip:192.168.0.1)的ssh-key授权,有两种方式:
方式1、在主机A通过ssh-copy-id指令将本机的公钥文本内容写入到主机B的授权密钥文件里

# 如果主机B的ssh端口是默认的22端口,也可以省去- p 22。如果是要登录主机B的非root用户,则修改为目标用户的用户名。这种方式需要输入目标用户的登录密码。
讯享网
#输入主机B用户的登录密码后,执行成功则可以在主机B的目标用户home目录的.ssh文件夹(即~/.ssh/)的authorized_keys文件(即授权密钥文件)看到成功追加了主机A的ssh-key公钥(即id_ed25519.pub)的文本内容。
方式2、可以跳过ssh-copy-id指令,直接登录主机B的目标用户,编辑目标用户的授权密钥文件(即~/.ssh/authorized_keys,没有该文件则需用touch指令先创建该文件),把主机A的ssh-key公钥(即id_ed25519.pub)的文本内容追加进来。
上述两个前提完成了,就可以在源机器(即主机A,ip:192.168.0.1)执行ssh指令通过ssh-key免密登录到目标机器(即主机B,ip:192.168.0.2)。


如果想在源机器上使用ssh工具(比如XShell、WindTerm、MonaXterm等)通过ssh-key免密登录到目标机器呢?
打开ssh工具,填写目标机器(即主机B,ip:192.168.0.2)的ip、端口、用户名,然后输入登录密码的界面通常都会有另一个选项或选项卡,一般叫做“public key”或“ssh key”之类的。点击该选项或选项卡会要求选择密钥文件或身份文件,选择ssh-key私钥(即id_ed25519文件)然后就可以免密登录了。
现在常用的git代码仓库网站(简称git站)有:gitee、coding、github、gitlab、bitbucket等。
在git站注册了账号后,可以进入账号设置里面添加ssh-key,从而实现你本地机器免密clone、pull、push你在该git网站的仓库(即项目代码)。这个功能利用的就是ssh-key免密连接原理。
git站的这个功能和使用ssh-key免密登录服务器就仅仅是第(二)步的操作方式不同而已:
都是采用的方式2,只不过源机器的ssh-key公钥(即id_ed25519.pub)文本内容不是直接写入到目标机器的目标用户的授权密钥文件里,而是粘贴到git站的账号设置里的ssh-key配置项。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146924.html