Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
lmk123 opened this issue Apr 23, 2018 · 13 comments
Open

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

lmk123 opened this issue Apr 23, 2018 · 13 comments

Comments

@lmk123
Copy link
Owner

lmk123 commented Apr 23, 2018

前段时间趁腾讯云做活动的时候买了个低配的主机,想了想总不能拿来吃灰吧,所以决定在主机上装个 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,这下就五花八门了,大多都是跟权限有关,包括:

  • 当前用户目录 ~ 的权限
  • 用户目录下的 .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 登陆……就成功了!

总结

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

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

@kinglisky
Copy link

卧槽我也碰到这个问题,想用 root 用户来登录服务器,默认给的 ubuntu 的居然没给到 root 权限,真是令人窒息的操作。

@Xavier1989
Copy link

Xavier1989 commented Nov 5, 2018

kao,终于找到原因了。跟楼主一样折腾了半天,原来密钥在ubuntu目录。

@kidultx
Copy link

kidultx commented Jun 4, 2019

感谢感谢,腾讯云竟然搜不到一点解决方案

@horizon98
Copy link

断断续续折腾挺久了,非常感谢楼主的解决方案!

@cjqpker
Copy link

cjqpker commented Nov 18, 2020

把这一项 #PasswordAuthentication yes 打开,PermitRootLogin 设为 yes 就可以密码登录了

@pinguinPeter
Copy link

cat /home/ubuntu/.ssh/authorized_keys >> /root/.ssh/authorized_keys 这个步骤能否再详细点? 小白弄不出来,就差这么一下了。后面不会用这个配置的服务器了,弄了一下午。

@horizon98
Copy link

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
Copy link

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 这个文件里。

issue

这样弄不出来,能否把操作步骤截个图出来下!谢谢

@horizon98
Copy link

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 这个文件里。

issue

这样弄不出来,能否把操作步骤截个图出来下!谢谢

@pinguinPeter 这样应该就可以了啊,更改过sshd_congig文件之后要记得要输入service sshd restart重启ssh服务。现在通过ssh用密钥应该是能登录root账号的,如果不能的话应该有报错或者提示的。

@pinguinPeter
Copy link

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 这个文件里。

issue 这样弄不出来,能否把操作步骤截个图出来下!谢谢

@pinguinPeter 这样应该就可以了啊,更改过sshd_congig文件之后要记得要输入service sshd restart重启ssh服务。现在通过ssh用密钥应该是能登录root账号的,如果不能的话应该有报错或者提示的。

ok

@yym68686
Copy link

确实有用!

@MikeJackOne
Copy link

这个配置起来就是坑

@Lucas-cooperate
Copy link

很好的思路,我也解决了,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants