小白踩坑SSH。
吐个糟先
前段时间开始学习Linux云服务器部署运维,在免密码登录那块卡了很久,一直没找到原因,删除实例,重新生成SSH key,折腾了几次,每次都以为这次没问题了,结果登录的时候,擦,还是要求输入密码,你说糟心不?索性先搁浅了起来,前几天又来找虐,试了两次,竟然成功登录了,小激动啊!
记录下免密码登录的整个操作流程,庆祝下,也给没踩坑的参考下。
正文
远端登入如果每次都要输入密码,还是挺麻烦的,不过,别担心,聪明的前辈们早就想到解决办法啦!用非对称加密的方式来实现免密码登录。那,具体怎么玩?
步骤:
机器A: 本地的Mac
机器B: 远端Linux服务器
Step1、在本地机器A检查是否已经生成id_rsa.pub
终端运行
cat ~/.ssh/id_rsa.pub
如果存在该文件,终端运行:
ssh-keygen -p
, 将passphrase重新设置为空,直接按Enter即可,这一步很重要,不然的话,即使你设置了免密码登录,还是要每次都输入passphrase才可以登录到远端服务器。如果不存在该文件,需要先生成,终端运行:
ssh-keygen -t rsa
, 就会生成公钥~/.ssh/id_rsa.pub
以及密钥~/.ssh/id_rsa
啦。同样的,一直按Enter,不要设置passphrase。
Step2、在机器B添上本地的公钥
登录远端服务器后,新建authorized_keys
mkdir ~/.ssh touch ~/.ssh/authorized_keys
将公钥贴进远端服务器的authorized_keys中
在A上运行:
cat ~/.ssh/id_rsa.pub
, 复制本机的公钥回到B上,运行:
nano ~/.ssh/authorized_keys
, 把公钥贴进去设置机器B上的文件权限
运行:
chmod 700 ~/.ssh chmod 644 ~/.ssh/authorized_keys
有的参考文档要求设置成600,试了下,644,600,保证owner是可读写可执行,而其他用户和群组的最大权限是可读即可。
可以了!很简单是不是?试试看,退出重新登录下,不用敲密码啦!
The end
BTW,我之前的问题是passphrase没有设置为空,另外SSH文件复制时也出错,后面重新生成才解决的。
看了一些有关SSH免登录的操作说明,有一篇挺干货的。推荐: