Ubuntu下使用SSH登录root用户

前言

  Ubuntu默认没有安装SSH服务器是出于安全考虑。SSH(Secure Shell)是一种通过加密通道进行远程访问和管理的协议,它提供了对计算机系统的安全访问和通信。然而,由于SSH服务器可能成为潜在的安全风险,因此Ubuntu默认情况下并不安装SSH服务器。

  用户在需要使用SSH服务器时可以手动安装并配置SSH服务器,以便在需要时进行远程访问和管理。安装SSH服务器后,管理员应该采取适当的安全措施,如配置防火墙、限制用户访问权限、使用密钥认证等,以确保系统安全可靠。

  接下来的文章中将带大家使用Ubuntu 23.10来安装SSH服务并通过root用户登录

一:在Ubuntu上启用SSH

(一):安装SSH服务并启用

Ⅰ:打开终端安装所需要的SSH服务
    sudo apt update                     # 更新系统软件包索引
    sudo apt install openssh-server     # 安装SSH服务
Ⅱ:开启SSH服务以及查看SSH服务
    sudo systemctl status ssh           # 查看SSH服务是否被启动
    sudo systemctl start ssh            # 开启SSH服务
    sudo systemctl stop ssh             # 关闭SSH服务
    sudo systemctl restart ssh          # 重启SSH服务

1699344213543.jpg

(二):远程连接SSH服务器

1. 基于密码验证连接

  上面我们开启了服务器的SSH服务,那么就是说我可以在其它任意一台带有SSH工具的电脑上进行连接,比如我们上面安装了SSH工具,就可以按照如下方式连接到其它服务器。

语法:ssh -p端口 主机名@IP地址
比如:ssh -p22 ubuntu@111.xxx.xxx.158

》第一次连接时,将看到下面的信息:
    The authenticity of host '111.xxx.xxx.158 (111.xxx.xxx.158)' can't be established.
    ED25519 key fingerprint is SHA256:Xkr3IeMVd1iSqd+uHjsxaia6QYBP1CmncAnrev9tGQE.
    This key is not known by any other names.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
》输入yes并且你将会被提示输入你的密码:
    Warning: Permanently added '111.231.171.158' (ED25519) to the list of known hosts.
    ubuntu@111.231.171.158's password:
》输入正确密码后会看到默认的Ubuntu消息:
    Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-86-generic x86_64)
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    ......
这样就可以正常使用了,忘了说,若不知道ip地址的话则可以通过ip a 或 ip addr ls命令查询

  说到这其实我们已经可以通过如XShell工具来进行服务器的连接了\color{#f00}{说到这其实我们已经可以通过如XShell工具来进行服务器的连接了}说到这其实我们已经可以通过如XShell工具来进行服务器的连接了

2. 基于密钥验证连接

  使用密钥登录可以提供更高的安全性,而且可以免去记忆密码的烦恼,其次还有一个重要的就是防止密码暴力破解,因为密码登录存在被暴力破解的风险,特别是当远程登录服务暴露在公网时。而使用密钥登录可以有效防止密码暴力破解攻击,因为私钥相对于密码来说更难以被猜测或破解。

  所以默认通过ssh客户端命令登录远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。
image.png

【#### 操作步骤 ####】
Ⅰ:首先看看本地有没有公钥:
    cat ~/.ssh/id_rsa.pub
Ⅱ:若查看为空的话则需要生成一个(一路回车三次即可,要看详情则看下面的补充1)
    语法:
        ssh-keygen [-t rsa] [-b 1024] [-C comment]
            -t:指定要创建的密钥类型,默认是rsa
            -b:指定密钥长度,默认是2048
            -C:指定注释文字,默认是邮箱地址
    使用方式:
        方式1:需要手动确认
            ssh-keygen -t rsa -C test@qq.com
        方式2:无需回车自动应答方式
            ssh-keygen -t rsa -C test@qq.com -f ~/.ssh/id_rsa -P ""
Ⅲ:把我们生成的公钥拷贝到远程机器的authorized_keys文件里:
    语法:
        ssh-copy-id [-i [identity_file]] [user@]machine
            ssh-copy-id:命令
            -i :        指定下发公钥的路径
            [user@]:    以什么用户身份进行公钥分发(root),如果不输入,表示以当前登录的系统用户身份分发公钥
            machine:    下发公钥至那台服务器, 填写远程主机IP地址
    使用方式:
        方式1:推送公钥,[将A的公钥写入B的~/.ssh/authorized_keys文件中] 需要手动确认
            ssh-copy-id -i ~/.ssh/id_rsa.pub xiaofeng@192.168.224.134
Ⅳ:这样就可以直接登录了服务器B的xiaofeng用户了,不需要输入密码了
    登录测试
        ssh xiaofeng@192.168.224.134
补充1:
    Enter file in which to save the key (/home/your_username/.ssh/id_rsa):
        系统会询问你希期将新生成的密钥保存到哪个文件中。默认情况下,它会建议将密钥保存到:
        /home/your_username/.ssh/id_rsa,你可以按Enter键接受默认值,也可以输入其他路径和文件名。
    Enter passphrase (empty for no passphrase):
        如果你希望为私钥设置一个额外的密码保护,系统会要求你输入一个passphrase。这个passphrase并不是必需的,
        你可以留空以跳过此步骤,但添加passphrase能够提高私钥的安全性。
    Enter same passphrase again:
    如果你在上一步输入了passphrase,系统会再次要求你确认该passphrase,以确保你没有输错。

二:在Ubuntu上使用Root用户

  当使用Ubuntu操作系统时,默认情况下是禁止root用户登录的,这是为了增强系统的安全性。然而,在某些特定情况下,你可能需要启用root用户登录。在本节中,我们将详细介绍如何在Ubuntu 23.10版本下开启root用户登录。

  若使用的是 Ubuntu 22.04 及以下则无需操作这一部分,只需处理最后一个框

》》》:为了更好编辑文件则使用vim
    执行: sudo apt install vim

Ⅰ:在普通用户下为root用户设置密码(这里我的密码是“1234qwer.”)
    sudo passwd root
Ⅱ:测试之前的root用户是否可以登录(成功后执行exit退出)
    su -
Ⅲ:修改50-ubuntu.conf配置文件(若没有此文件则找类似的文件)
    sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
        后面添加如下配置:
            greeter-show-manual-login=true
            all-guest=false
Ⅳ:修改gdm-autologin配置文件(若没有此文件则找类似的文件)
    sudo vim /etc/pam.d/gdm-autologin
        注释如下配置:
            # auth  required   pam_succeed_if.so user != root quiet_success
Ⅴ:修改gdm-password配置文件(若没有此文件则找类似的文件)
    sudo vim /etc/pam.d/gdm-password
        注释如下配置:
            # auth  required   pam_succeed_if.so user != root quiet_success
Ⅵ:修改/root/.profile文件
    sudo vim /root/.profile
        注释如下配置:
            # mesg n 2> /dev/null || true
        添加如下配置:
            tty -s&&mesg n || true
到这也就完成了root用户的设置,我们注销当前用户重新选择root用户即可完成登录

注:在root用户下虽然不用sudo命令提高权限,但是需要谨慎操作\color{#f00}{注:在root用户下虽然不用sudo命令提高权限,但是需要谨慎操作}注:在root用户下虽然不用sudo命令提高权限,但是需要谨慎操作

  我们已经成功在Ubuntu上设置了root用户,并且也可以使用主机登录上root用户,但是细心的会发现,使用远程的SSH工具并不可以登录root用户,其实这个是Ubuntu的安全策略,一旦root密码泄露可以说和这个系统说拜拜了。

修改/etc/ssh/sshd_config配置文件
    sudo vim /etc/ssh/sshd_config
        修改Authentication一栏里的配置:
        注释:
            #PermitRootLogin prohibit-password
        添加:
            PermitRootLogin yes   
重启ssh服务:
    sudo systemctl restart ssh
               
补充说明:
    这个配置文件是SSH服务器的配置文件,其中包含各种SSH服务器的设置,
    如允许的协议版本、登录认证方法、加密方式等
<think>好的,我需要帮助用户了解如何在Ubuntu系统中修改root用户SSH登录设置。首先,用户可能希望启用root用户SSH登录,或者可能是想禁用这个功能以增强系统安全。根据常见的安全建议,通常不建议允许root用户直接通过SSH登录,因为这增加了被攻击的风险。但用户可能有特殊需求,所以需要详细说明两种情况的步骤。 首先,我需要回忆在Ubuntu中如何修改SSH配置。SSH服务器的配置文件通常是/etc/ssh/sshd_config。在这个文件中,有一个参数叫做PermitRootLogin,它控制是否允许root用户通过SSH登录。默认情况下,Ubuntu可能设置为“prohibit-password”或“no”,这意味着不允许直接使用密码登录root,但可能允许使用密钥认证,或者完全禁止。 接下来,用户可能需要知道如何修改这个参数。步骤大概包括: 1. 使用sudo权限编辑sshd_config文件。 2. 找到PermitRootLogin行,修改其值。例如,设置为“yes”允许登录,“no”禁止。 3. 保存文件后重启SSH服务使配置生效。 同时,用户可能需要了解如何设置root用户的密码,因为在Ubuntu中默认root账户是禁用的,密码未设置。如果需要允许密码登录用户需要先通过sudo passwd root来设置密码。 另外,需要注意,如果用户只是想以root身份执行命令,可能更安全的方式是使用普通用户通过sudo来执行,而不是直接允许root登录。 在解释过程中,还需要提醒用户修改配置文件时的注意事项,比如备份原文件,避免配置错误导致无法远程连接。此外,如果启用了防火墙(如UFW),需要确保SSH端口(默认22)是开放的,否则即使配置正确也可能无法连接。 可能还需要提到使用SSH密钥认证比密码更安全,尤其是在允许root登录时,应该考虑禁用密码认证,仅允许密钥登录,以提升安全性。这可以通过修改sshd_config中的PasswordAuthentication和PubkeyAuthentication参数来实现。 最后,需要强调在修改配置后,重启SSH服务是必要的,否则更改不会生效。可以通过systemctl restart sshd或service ssh restart等命令来实现,具体取决于系统使用的初始化系统。 总结步骤应该是: 1. 设置root密码(可选,如果需要密码登录)。 2. 编辑SSH配置文件,修改PermitRootLogin参数。 3. 重启SSH服务。 4. 测试配置是否生效。 5. 建议的安全措施,如使用密钥认证、禁用密码登录等。 需要确保每一步都清晰,并且警告用户关于安全风险,尤其是允许root登录的风险。同时,如果用户只是想临时获得root权限,推荐使用sudo su -或者sudo -i命令,而不是直接启用root账户。</think>在Ubuntu系统中,默认禁止通过SSH直接以`root`用户登录。以下是修改此配置的分步指南,包含安全建议: --- ### **步骤 1:设置root密码(若未设置)** 默认情况下,Ubuntu的`root`账户未启用。若需使用密码登录,需先设置密码: ```bash sudo passwd root ``` 输入当前用户密码后,设置新的`root`密码。 --- ### **步骤 2:修改SSH配置文件** 1. 使用文本编辑器打开SSH配置文件: ```bash sudo nano /etc/ssh/sshd_config ``` 2. 找到以下行(或添加新行): ```bash #PermitRootLogin prohibit-password ``` 修改为: - **允许root登录**(不推荐): ```bash PermitRootLogin yes ``` - **仅允许密钥登录**(推荐): ```bash PermitRootLogin prohibit-password ``` - **完全禁止root登录**(默认安全配置): ```bash PermitRootLogin no ``` 3. 保存文件并退出(`Ctrl+O` → `Enter` → `Ctrl+X`)。 --- ### **步骤 3:重启SSH服务** ```bash sudo systemctl restart ssh # 或旧版本系统使用: sudo service ssh restart ``` --- ### **步骤 4:验证配置** 尝试通过SSH以`root`登录: ```bash ssh root@服务器IP ``` - 若配置为`PermitRootLogin no`,会提示权限被拒绝。 - 若允许登录,需输入密码或密钥。 --- ### **安全建议** 1. **优先使用普通用户+sudo** 通过普通用户登录后切换至`root`更安全: ```bash sudo su - ``` 2. **禁用密码登录,仅用密钥认证** 在`/etc/ssh/sshd_config`中设置: ```bash PasswordAuthentication no PubkeyAuthentication yes ``` 3. **限制SSH访问IP** 使用防火墙(如`ufw`)或SSH配置中的`AllowUsers`限制来源IP。 --- ### **常见问题** - **修改后无法连接?** 检查SSH服务状态:`sudo systemctl status ssh` 确认防火墙开放22端口:`sudo ufw allow 22` - **恢复默认配置** 将`PermitRootLogin`设为`prohibit-password`并重启SSH服务。 --- 通过以上步骤,您可以灵活控制`root`用户SSH登录权限,同时平衡便利性与安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值