亚马逊云免绑卡账号 AWS云服务器免密登录
为什么你要放弃密码,拥抱密钥?
\n还记得上次你忘记密码的窘境吗?在办公室里抓耳挠腮,重启了十几次密码,最后被IT部门打了个电话过来骂一顿。或者更糟,密码被黑客轻易破解,服务器沦陷,数据全丢。这时候,你可能需要一个更聪明的办法——SSH密钥登录。
\n\n密码的那些破事
\n密码这东西,说白了就是一把钥匙,但问题是这把钥匙太容易被复制或者猜中。比如“123456”,“password”这种弱密码,黑客秒破。就算你用了复杂密码,但每次登录都要输入,还要记在小本本上,或者用密码管理器,但万一管理器被黑了呢?而且,每次登录都要输密码,尤其是频繁登录的时候,简直浪费时间。
\n我曾经有个朋友,管理10台服务器,每次都要输入密码,结果有一次他输错了,系统锁定了他的账号,只能找管理员解锁。那叫一个崩溃。所以,免密登录不是懒,而是为了效率和安全。
\n\n密钥登录的神奇之处
\nSSH密钥登录就像给你的服务器装了个智能门锁。你有一把专属的钥匙(私钥),而服务器上存放着钥匙的复印件(公钥)。只要私钥和公钥匹配,门就自动打开。整个过程无密码、无干扰,瞬间连接,还更安全,因为密钥破解难度比暴力破解密码高得多。
\n想象一下,当你在咖啡厅喝着拿铁,敲下几行命令,服务器立刻响应,不需要输入任何密码。这种自由感,简直像从古代马车升级到超音速飞机。别再说“密码登录很方便了”,那是你没体验过密钥登录的爽。
\n\n手把手教你设置免密登录
\n\n生成你的专属密钥对
\n打开终端(别紧张,不是让你去拆电脑),输入以下命令:
\nssh-keygen -t rsa -b 4096\n然后你会被问几个问题,比如保存路径,直接回车就行,默认会存到~/.ssh/id_rsa。接着会问你是否要设置密码,这里建议不要设,或者设个简单的,因为免密登录就是图省事。但如果你特别谨慎,可以加个密码,不过这样每次使用还是要输入密码,可能有点矛盾,但安全一些。
\n生成成功后,你会看到类似这样的提示:
\nYour identification has been saved in /home/you/.ssh/id_rsa\nYour public key has been saved in /home/you/.ssh/id_rsa.pub\n这时候,私钥在id_rsa,公钥在id_rsa.pub。记住,私钥就是你家的门禁卡,千万别给别人,公钥就是可以贴在门口的牌子,告诉门卫“这人可以进”。
\n\n上传公钥到AWS
\n登录AWS控制台,找到你的EC2实例。点击实例名称,进入详情页。在“描述”标签下,找到“安全组”,点击进去。然后找到“入站规则”,添加规则,允许SSH(端口22)的来源。不过这个步骤可能已经设置好了,主要是上传公钥。
\n其实更简单的方式是,当创建实例的时候,AWS会提示你选择或创建密钥对。这时候你可以选择“Create a new key pair”,然后输入名称,下载.pem文件。这个.pem文件就是你的私钥,保存好,别丢了。然后公钥会自动上传到AWS,关联到实例。
\n如果是已有的实例,可能需要手动把公钥添加到服务器的authorized_keys文件里。这时候你可以用密码登录一次,然后:
\nmkdir -p ~/.ssh\nchmod 700 ~/.ssh\necho '你的公钥内容' >> ~/.ssh/authorized_keys\nchmod 600 ~/.ssh/authorized_keys\n这样,公钥就添加成功了。记得修改权限,不然SSH会拒绝访问。
\n\n亚马逊云免绑卡账号 配置服务器权限
\n有时候,即使你上传了公钥,还是连不上,问题可能出在文件权限上。SSH对权限非常敏感,如果你的~/.ssh目录权限是755,或者authorized_keys是644,系统会认为不安全,直接拒绝连接。
\n正确的权限设置是:
\n- \n
~/.ssh 目录:700(drwx------)
\n- 亚马逊云免绑卡账号
~/.ssh/authorized_keys 文件:600 (-rw-------)
\n 私钥文件(如id_rsa):600
\n
用命令调整权限:
\nchmod 700 ~/.ssh\nchmod 600 ~/.ssh/authorized_keys\nchmod 600 ~/.ssh/id_rsa\n这一步特别重要,千万别跳过!否则你会反复尝试,以为哪里出错了,结果发现只是权限问题,哭晕在厕所。
\n\n连接服务器,感受自由
\n现在,用ssh命令连接:
\nssh -i ~/.ssh/id_rsa ec2-user@你的实例IP\n如果一切顺利,你会直接进入服务器,不用输入密码。这时候你可以享受这种自由的感觉,就像不用带钥匙就能进家门一样。不过要注意,这个命令里的ec2-user可能根据镜像不同而不同,比如Ubuntu是ubuntu,Amazon Linux是ec2-user,CentOS是centos,等等。记得查清楚。
\n如果还是连不上,先别急着骂AWS,检查一下IP地址是否正确,安全组是否允许22端口,还有公钥是否正确上传。有时候复制公钥时多了一个空格,或者换行符,就会导致失败。仔细检查一下,再试一次。
\n\n常见问题排查指南
\n\n权限问题:644还是600?
\n最常见的问题就是权限不对。比如,你的私钥文件权限如果是644,SSH会认为不安全,拒绝使用。正确的权限应该是600,也就是只有你自己能读写。用命令:
\nchmod 600 ~/.ssh/id_rsa\n同样,~/.ssh目录权限应该是700,authorized_keys是600。这些细节很重要,不然你会一脸懵,为什么密码都不对还连不上。
\n\n密钥格式不对?别慌!
\n有时候AWS的公钥可能格式有问题,比如你复制的时候多了空格或者换行。这时候可以重新复制,或者用ssh-keygen -y -f id_rsa来生成公钥,确保格式正确。
\n另外,有些旧版本的SSH客户端可能不支持新的密钥格式,需要转换。不过现在一般没问题,但如果遇到问题,试试用:
\nssh-keygen -p -m PEM -f id_rsa\n把密钥转成PEM格式,这样老系统也能用。
\n\n密钥被拒绝?可能是这个原因
\n如果你用ssh -i命令时提示“Permission denied (publickey)”,但你确信公钥已经上传,那可能是以下原因:
\n- \n
你的私钥文件路径不对,比如你保存在~/.ssh/,但命令里用的是~/key.pem,记得检查路径。
\n公钥内容在authorized_keys中是否完整?有时候复制的时候漏了一部分,或者换行符问题。打开authorized_keys文件,确认公钥内容是连续的,没有多余空格。
\n服务器上的SSH服务配置是否允许密钥登录?检查/etc/ssh/sshd_config文件,确保PubkeyAuthentication yes,AuthorizedKeysFile .ssh/authorized_keys。
\n
如果以上都正常,试试重启SSH服务:sudo systemctl restart sshd。有时候服务需要重启才能生效。
\n\n安全小贴士:别让密钥变成“裸奔”
\n虽然免密登录方便,但私钥的安全性至关重要。如果私钥被窃取,别人就能随意进入你的服务器。所以:
\n- \n
不要把私钥上传到GitHub或者公开仓库,这简直是给黑客送钥匙。曾经有开发者把私钥提交到GitHub,结果服务器被黑,数据被勒索,损失惨重。
\n定期更换密钥,特别是当你的团队成员变动时,及时更新authorized_keys。旧的密钥要及时删除,避免后门。
\n使用SSH代理(ssh

