Skip to content
返回

使用 root 用户登陆到腾讯云的主机

前段时间趁腾讯云做活动的时候买了个低配的主机,想了想总不能拿来吃灰吧,所以决定在主机上装个 Docker 玩玩。腾讯云默认提供的账户是 ubuntu,安装 Docker 总是需要敲 sudo,所以我想直接用 ssh 连接到 root 用户,没想到踩了很长时间的坑,这里写个流水账记录一下过程。

第一步:配置使用密匙登陆到主机

从网页登陆到主机无法方便的复制文件到主机里,所以我使用了密匙登陆的方式,这个步骤比较简单:

  1. 创建一对密匙。在腾讯云的控制台里创建密匙时有两种选择,一种是让腾讯云帮你生成一对密匙,然后你下载私匙;另一种是自己在电脑上创建一对密匙,然后将公匙提供给腾讯云。
  2. 创建完后,将密匙关联到主机。这一步其实就是将公匙写入了主机的 /home/ubuntu/.ssh/authorized_keys 文件中。
  3. 如果你选择让腾讯云生成密匙,那还需要将下载的私匙放到当前登陆账户的 .ssh 文件夹下:mv path/to/id_rsa_test ~/.ssh 并且修改文件权限 chmod 600 ~/.ssh/id_rsa_test,否则会报“Permissions 0777 for ‘/Users/username/.ssh/id_rsa_test’ are too open.”的错误。
  4. 写一段配置将私匙用于腾讯云的服务器,这样做是为了针对不同的主机使用不同的私匙。运行 vim ~/.ssh/config 并添加如下配置:
# xxx 为主机的 IP 地址
Host xxx.xxx.xxx.xxx
HostName xxx.xxx.xxx.xxx
Port 22
User ubuntu
IdentityFile ~/.ssh/id_rsa_test

走完上面的步骤之后,运行 ssh xxx.xxx.xxx.xxx 就可以连接到你的主机了。

第二步:为 root 账户设置密码

刚买的主机是没有给 root 账户设置密码的,但也很简单,使用 ubuntu 账户运行 sudo passwd 设置密码就可以了,之后你就可以运行 su 从 ubuntu 切换到 root 了,但是每次切换的时候都需要输入密码。

第三步:直接用 root 登陆到主机

这一步一直不成功,花了我很长时间。

网上给出的方案非常简单。登陆到主机后:

  1. 运行 sudo vim /etc/ssh/sshd_config
  2. PermitRootLogin 的值改为 yes,然后保存并退出
  3. 运行 service ssh restart 重启 sssh 服务

但是我用这种方式登陆时报错了:

$ ssh root@xxx.xxx.xxx.xx -vvv
...
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
root@xxx.xxx.xxx.xx: Permission denied (publickey)

我先是登陆到主机上查看了日志:tac /var/log/auth.log | grep sshd,最新的一条显示 Connection closed by xxx.xxx.xx.xx [preauth],其中 xxx 是我本地电脑的 IP 地址,所以这说明连接是被我本地电脑关闭的。

然后我开始 Google,先搜索 permission denied publickey,得到的内容都是关于用 ssh 连接 GitHub 的报错,原因是没有将公匙添加到 GitHub 中。但是我的公匙已经由腾讯云添加过了,所以不应该是这个原因导致的。

然后我开始搜索 we did not send a packet, disable method,这下就五花八门了,大多都是跟权限有关,包括:

我一条条比对了这三个文件(夹)的权限,为此还顺便了解了一下 Linux 的权限,但是一一比对后发现主机上的权限都是对的,我也是在这个过程中才知道腾讯云把我关联的公匙放在了 /home/ubuntu/.ssh/authorized_keys 里。

一晚上过去了,能折腾的办法都折腾了,还是不能用 root 账户登陆上去,只能用 ubuntu 登陆上去之后通过 su 切换到 root。折腾一番后我又回想了我整个折腾的过程,突然想到一点:腾讯云把我的公匙放在了 /home/ubuntu/.ssh/authorized_keys 是不是意味着只能用 ubuntu 用户登陆?如果要登陆到 root 是不是也要将公匙放在 /root/.ssh/authorized_keys 下?

我切换到 root 用户,检查了一下 /root/.ssh/authorized_keys 文件是空的。于是我运行 cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 将 ubuntu 的公匙写进了 root 里,再在电脑上用 root 登陆……就成功了!

总结

在尝试登陆时还遇到一个错误:root@xxx.xxx.xxx.xx: Connection reset by peer.。一开始以为是公司网络的问题,但让同事试着登陆腾讯云的主机却没有问题,为此我还提交了工单,结果晚上回家后在家登陆就成功了 :joy:

回过头来看了一下,我想我还是应该买本书学习一下 Linux 系统了 :joy:


分享这篇文章:

上一篇
在 macOS 上通过代理使用 ssh 登陆服务器
下一篇
记一次网络错误的解决过程