免密登陆和ssh-copy-id命令解析
2020-08-04 本文已影响0人
boyiis
一直在使用免密登录,背后的原理一直没有搞懂,今天有时间记录下:
免密登录大致分为三步
- 本地机器生成公私钥
ssh-keygen -t rsa
- 上传公钥到目标机器
ssh-copy-id user@192.168.155.146
- 测试免密登录
ssh 192.168.155.146
免密登录,需要先在本机生成公钥,然后将公钥拷贝到远程主机,拷贝的过程,既可以手动(在远程主机根目录下创建.ssh目录,然后将公钥存入该目录下authorized_keys文件中即可),也可以直接命令操作ssh-copy-id,这个操作做完了,即可免密登录远程主机(如果登录不成功用 systemctl restart sshd 命令重启下ssh服务)。
仔细回想这个过程,先在本机生成公钥,然后将公钥复制到远程主机,接着就可以免密登录远程主机,这个过程似乎与我们想想的不太一样,我们可能希望远程主机免密登录本机。这就好比我要去朋友家,我先将我们家的钥匙放在朋友家,结果我就可以随便进入朋友家里。正常来说,我家钥匙在朋友家里,应该是朋友随便进入我家。下面将详细说明免密登录过程,解决上述疑惑。
免密登陆过程

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
注意事项
- 免密码登录的处理是用户对用户的,切换其他用户后,仍然需要输入密码
- 远程机器的.ssh目录需要700权限,authorized_keys文件需要600权限,否则配置是不成功的(每次登录都得重新去输入密码的)