免密登录,需要先在本机生成公钥,然后将公钥拷贝到远程主机,拷贝的过程,既可以手动(在远程主机根目录下创建.ssh目录,然后将公钥存入该目录下authorized_keys文件中即可),也可以直接命令操作ssh-copy-id,这个操作做完了,即可免密登录远程主机

仔细回想这个过程,先在本机生成公钥,然后将公钥复制到远程主机,接着就可以免密登录远程主机,这个过程似乎与我们想想的不太一样,我们可能希望远程主机免密登录本机。这就好比我要去朋友家,我先将我们家的钥匙放在朋友家,结果我就可以随便进入朋友家里。正常来说,我家钥匙在朋友家里,应该是朋友随便进入我家。通过实验我们来看是什么样的。

一、生成类型rsa免密的公钥。

ssh-keygen

之后一路回车

二、将公钥放入目标机器上。

ssh-copy-id

执行成功之后,我们在目标机器上查看/root/.ssh目录已经生成,并且多了一个名为authorized_keys的文件,里面保存的正是原机器上ssh-keygen生成的id_rsa.pub的内容。

三、免密登陆过程

在这里插入图片描述

四、ssh-copy-id命令解析

ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,
ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
ssh- copy-id命令可以把本地的ssh公钥文件安装到远程主机对应的账户下。
达到的功能:
       ssh-copy-id - 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。
使用模式:
       ssh-copy-id [-i [identity_file]] [user@]machine

-i:指定公钥文件
 
1、把本地的ssh公钥文件安装到远程主机对应的账户下:
 
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
描述:  
       ssh-copy-id 是一个实用ssh去登陆到远程服务器的脚本(假设使用一个登陆密码,
                   因此,密码认证应该被激活直到你已经清理了做了多个身份的使用)。
                   它也能够改变远程用户名的权限,~/.ssh和~/.ssh/authorized_keys
                   删除群组写的权限(在其它方面,如果远程机上的sshd在它的配置
                   文件中是严格模式的话,这能够阻止你登陆。)。

 
                   如果这个 “-i”选项已经给出了,然后这个认证文件(默认是~/.ssh
                   /id_rsa.pub)被使用,不管在你的ssh-agent那里是否有任何密钥。


                   另外,命令 “ssh-add -L” 提供任何输出,它使用这个输出优先于
                   身份认证文件。如果给出了参数“-i”选项,或者ssh-add不产生输出,
                   然后它使用身份认证文件的内容。一旦它有一个或者多个指纹,它使
                   用ssh将这些指纹填充到远程机~/.ssh/authorized_keys文件中。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐