免密登陆和ssh-copy-id命令解析

2020-08-04  本文已影响0人  boyiis

一直在使用免密登录,背后的原理一直没有搞懂,今天有时间记录下:

免密登录大致分为三步
  1. 本地机器生成公私钥
ssh-keygen -t rsa
  1. 上传公钥到目标机器
ssh-copy-id user@192.168.155.146
  1. 测试免密登录
ssh 192.168.155.146

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

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

免密登陆过程
免密登录过程.jpg
ssh-copy-id命令解析
1. ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上

2. ssh-copy-id 命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

3. ssh- copy-id 命令可以把本地的ssh公钥文件安装到远程主机对应的账户下。

达到的功能:
ssh-copy-id 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。

使用模式:

ssh-copy-id [-i [identity_file]] [user@]machine

-i:指定公钥文件
 
把本地的ssh公钥文件安装到远程主机对应的账户下:
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
注意事项
  1. 免密码登录的处理是用户对用户的,切换其他用户后,仍然需要输入密码
  2. 远程机器的.ssh目录需要700权限,authorized_keys文件需要600权限,否则配置是不成功的(每次登录都得重新去输入密码的)
上一篇 下一篇

猜你喜欢

热点阅读