为ECS设置ssh密钥登录的方法

最近,租用的腾讯云服务器ECS中招了,来自伦敦IDC的黑客通过ssh访问暴力破解root密码,并种上了木马(估计是挖矿的),看来必须重视安全加固工作了。
ECS开放了80和443端口提供http和https服务,维护用的ssh端口22也是必须的。虽然可以为root设置更加复杂的密码,但也是给自己找麻烦,想来想去,最好还是取消ssh的密码登录方式,改为密钥登录方式,具体的操作步骤如下:

在腾讯云上,配置ECS采用ssh密钥登录方式

  1. 登录腾讯云,并转到ECS控制台。注意:为保障安全,ECS在关机状态才能修改登录方式!

  2. 选择SSH密钥-创建密钥,在弹出式窗口中选择创建新密钥对,并按提示进行操作。

    弹窗中的使用已有公钥按钮,其功能是:导入用户自己手工产生的公钥文件

  3. 根据提示信息下载私钥文件,注意自行妥善保存。默认文件后缀名为.dms,可以改为.txt。

  4. 将新生成的密钥对与需要的ECS进行绑定。绑定ECS成功后,ECS就不再支持密码登录了

    屏幕显示的公钥内容ssa-rsa,其实就是ECS服务器上$HOME/.ssh/authorized_keys的内容

调用方法1:在MAC上,用Terminal的命令行登录(需要指定密钥文件)

基本步骤是:

  1. Mac OS 用户请打开系统自带的终端(Terminal)并输入以下命令,赋予私钥文件仅本人可读权限(必须设置!)。

    1
    chmod 400 $HOME/Downloads/TENCENT_ECS.txt
  2. 在Terminal窗口中执行以下命令,进行远程登录。

    1
    ssh -i $HOME/Downloads/TENCENT_ECS.txt root@119.22.33.44

调用方法2:更简单的,Terminal无密码直接登录

在ssh指定密钥文件的基础上,还可以将ssh进一步简化为不需要指定密钥文件的信任方式,具体步骤如下:

  1. 在mac终端生成公钥文件id_rsa.pub和私钥文件id_rsa。

    1
    ssh-keygen -t rsa

    图中红色标识的是是否对公钥和私钥进行对称加密,如果你输入了的话,那么在后续利用私钥登录的时候,需要输入该密码对私钥进行解密。如果安全性要求不高,可以不输入,直接点击enter跳过。

  2. 在ECS服务器上寻找文件$HOME/.ssh/authorized_keys

  3. 编辑该文件,添加id_rsa.pub里面的公钥数据。

  4. 修改该文件的权限为644

    1
    chmod 644 $HOME/.ssh/authorized_keys
  5. 现在MAC终端上可免密登录你的Linux服务器了,登录命令:

    1
    ssh root@119.22.33.44

    或者,你也可以在Terminal的菜单上直接选择选择远程连接,而不需要先打开本地的字符终端了

    • 实际上,这就是腾讯云配置使用已有公钥的原理:首先在Client生成一对私钥和公钥,然后并将公钥内容加入到Server的authorized_keys文件中,使得其成为可信任的Client,这也是Github上代码自动化加载用户自定义运行环境配置的通用方法。
    • 注意:方法1需要在ssh命令行中指定私钥文件,而方法2不要指定私钥文件的原因是,Terminal自动调用Client的默认存储文件$HOME/.ssh/id_rsa,但前提是密钥是在这个Client生成的,如果其他client想要调用就需要自己去配置Server的公钥文件了。

参考文档