blog
blog copied to clipboard
使用 root 用户登陆到腾讯云的主机
前段时间趁腾讯云做活动的时候买了个低配的主机,想了想总不能拿来吃灰吧,所以决定在主机上装个 Docker 玩玩。腾讯云默认提供的账户是 ubuntu,安装 Docker 总是需要敲 sudo,所以我想直接用 ssh 连接到 root 用户,没想到踩了很长时间的坑,这里写个流水账记录一下过程。
第一步:配置使用密匙登陆到主机
从网页登陆到主机无法方便的复制文件到主机里,所以我使用了密匙登陆的方式,这个步骤比较简单:
- 创建一对密匙。在腾讯云的控制台里创建密匙时有两种选择,一种是让腾讯云帮你生成一对密匙,然后你下载私匙;另一种是自己在电脑上创建一对密匙,然后将公匙提供给腾讯云。
- 创建完后,将密匙关联到主机。这一步其实就是将公匙写入了主机的
/home/ubuntu/.ssh/authorized_keys文件中。 - 如果你选择让腾讯云生成密匙,那还需要将下载的私匙放到当前登陆账户的 .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.”的错误。 - 写一段配置将私匙用于腾讯云的服务器,这样做是为了针对不同的主机使用不同的私匙。运行
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 登陆到主机
这一步一直不成功,花了我很长时间。
网上给出的方案非常简单。登陆到主机后:
- 运行
sudo vim /etc/ssh/sshd_config - 将
PermitRootLogin的值改为yes,然后保存并退出 - 运行
service ssh restart重启 sssh 服务
但是我用这种方式登陆时报错了:
$ ssh [email protected] -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
[email protected]: 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,这下就五花八门了,大多都是跟权限有关,包括:
- 当前用户目录
~的权限 - 用户目录下的 .ssh 文件夹
~/.ssh的权限 ~/.ssh/authorized_keys文件的权限
我一条条比对了这三个文件(夹)的权限,为此还顺便了解了一下 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 登陆……就成功了!
总结
在尝试登陆时还遇到一个错误:[email protected]: Connection reset by peer.。一开始以为是公司网络的问题,但让同事试着登陆腾讯云的主机却没有问题,为此我还提交了工单,结果晚上回家后在家登陆就成功了 :joy:
回过头来看了一下,我想我还是应该买本书学习一下 Linux 系统了 :joy:
卧槽我也碰到这个问题,想用 root 用户来登录服务器,默认给的 ubuntu 的居然没给到 root 权限,真是令人窒息的操作。

kao,终于找到原因了。跟楼主一样折腾了半天,原来密钥在ubuntu目录。
感谢感谢,腾讯云竟然搜不到一点解决方案
断断续续折腾挺久了,非常感谢楼主的解决方案!
把这一项 #PasswordAuthentication yes 打开,PermitRootLogin 设为 yes 就可以密码登录了
cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 这个步骤能否再详细点? 小白弄不出来,就差这么一下了。后面不会用这个配置的服务器了,弄了一下午。
cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 这个步骤能否再详细点? 小白弄不出来,就差这么一下了。后面不会用这个配置的服务器了,弄了一下午。
@pinguinPeter 要先按照第二步设置密码,然后输入 su 命令切换成root账户,才有编辑 root/.ssh/authorized_keys 这个文件的权限(即输入那条 cat 命令)。
总之就是腾讯云默认只配置了 ubuntu 这个账户的公钥,没有配置root这个账户的公钥,所以无法使用密钥直接登录 root 账户。所以需要手动将公钥添加到 root/.ssh/authorized_keys 这个文件里。
cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 这个步骤能否再详细点? 小白弄不出来,就差这么一下了。后面不会用这个配置的服务器了,弄了一下午。
@pinguinPeter 要先按照第二步设置密码,然后输入
su命令切换成root账户,才有编辑 root/.ssh/authorized_keys 这个文件的权限(即输入那条 cat 命令)。总之就是腾讯云默认只配置了 ubuntu 这个账户的公钥,没有配置root这个账户的公钥,所以无法使用密钥直接登录 root 账户。所以需要手动将公钥添加到 root/.ssh/authorized_keys 这个文件里。
这样弄不出来,能否把操作步骤截个图出来下!谢谢
cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 这个步骤能否再详细点? 小白弄不出来,就差这么一下了。后面不会用这个配置的服务器了,弄了一下午。
@pinguinPeter 要先按照第二步设置密码,然后输入
su命令切换成root账户,才有编辑 root/.ssh/authorized_keys 这个文件的权限(即输入那条 cat 命令)。 总之就是腾讯云默认只配置了 ubuntu 这个账户的公钥,没有配置root这个账户的公钥,所以无法使用密钥直接登录 root 账户。所以需要手动将公钥添加到 root/.ssh/authorized_keys 这个文件里。![]()
这样弄不出来,能否把操作步骤截个图出来下!谢谢
@pinguinPeter 这样应该就可以了啊,更改过sshd_congig文件之后要记得要输入service sshd restart重启ssh服务。现在通过ssh用密钥应该是能登录root账号的,如果不能的话应该有报错或者提示的。
cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 这个步骤能否再详细点? 小白弄不出来,就差这么一下了。后面不会用这个配置的服务器了,弄了一下午。
@pinguinPeter 要先按照第二步设置密码,然后输入
su命令切换成root账户,才有编辑 root/.ssh/authorized_keys 这个文件的权限(即输入那条 cat 命令)。 总之就是腾讯云默认只配置了 ubuntu 这个账户的公钥,没有配置root这个账户的公钥,所以无法使用密钥直接登录 root 账户。所以需要手动将公钥添加到 root/.ssh/authorized_keys 这个文件里。这样弄不出来,能否把操作步骤截个图出来下!谢谢
@pinguinPeter 这样应该就可以了啊,更改过
sshd_congig文件之后要记得要输入service sshd restart重启ssh服务。现在通过ssh用密钥应该是能登录root账号的,如果不能的话应该有报错或者提示的。
ok
确实有用!
这个配置起来就是坑
很好的思路,我也解决了,谢谢