ssh 免密码登录 Linux
免密码登录简单描述
使用非对称算法,生成一个私钥和公钥,私钥加密的数据,只有通过公钥解密。私钥自己保留,其他人无法轻易查看到你的数据,而且加密解密在本地完成,传输过程中只传输加密的数据,安全性较高。
区别于 ssh 工具记录的账号密码登录,因为工具还是记录了你的账号和密码,只是省略了你输入账号密码的过程,传输的过程中,还是会涉及账号密码的信息传输,并不算是免密码登录。
创建密钥对
ssh-keygen -t rsa -C "wenhsing.test" -f ~/.ssh/is_rsa_root
使用ssh-key-gen
命令生成公钥和私钥。
-t
指定加密方式,这里指定了使用RSA加密。
-C
表示给对应的密钥添加类似注释的内容,可以忽略,我个人习惯是加上的,因为密钥太多了。 T_T
-f
指定该密钥对存放的位置和文件,默认是 ~/.ssh/id_rsa
大多数情况下是有很多密钥对的,所以为了不重复,还是很有必要添加的。当然,如果你全部都用一个密钥,那也可以忽略。
接下来,根据操作步骤提示进行操作即可。
如果你全部默认的话,那多敲几次回车就好了。Good Job!
如果需要设置你的私钥访问密码,在提示 passphrase 的时候输入你的密码,然后再输入一次确认密码即可。
执行成功后会添加两个文件,分别是之前指定路径存放的私钥文件以及一个以`.pub‵结尾的公钥文件。
将公钥添加到目标服务器
- 通过
ssh-copy-id
命令添加公钥
如果你的服务器开启了密码登录,那么可以使用这个方法一步到位添加好公钥到服务器:
ssh-copy-id -i is_rsa_root.pub root@wenhsing.test
然后输入服务器密码,它会自动将公钥内容写入到服务器的authorized_keys文件中
- 上传公钥,然后登陆服务器进行添加
当然,你可以通过将公钥文件上传到服务器,然后再将内容复制到authorized_keys文件中,完成公钥添加
上传文件
scp ~/.ssh/is_rsa_root.pub root@wenhsing.test:/root
登录服务器
ssh root@wenhsing.test
添加公钥
cat ~/is_rsa_root.pub >> ~/.ssh/authorized_keys
尝试登陆服务器
ssh root@wenhsing.test
执行 ssh 登录服务器,可以看到不需要填写服务器对应的登录密码了,是不是很方便?哈哈~