前言
Ubuntu默认没有安装SSH服务器是出于安全考虑。SSH(Secure Shell)是一种通过加密通道进行远程访问和管理的协议,它提供了对计算机系统的安全访问和通信。然而,由于SSH服务器可能成为潜在的安全风险,因此Ubuntu默认情况下并不安装SSH服务器。
用户在需要使用SSH服务器时可以手动安装并配置SSH服务器,以便在需要时进行远程访问和管理。安装SSH服务器后,管理员应该采取适当的安全措施,如配置防火墙、限制用户访问权限、使用密钥认证等,以确保系统安全可靠。
接下来的文章中将带大家使用Ubuntu 24.04 (LTS)来安装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服务
(二):远程连接SSH服务器
1. 基于密码验证连接
上面我们开启了服务器的SSH服务,那么就是说我可以在其它任意一台带有SSH工具的电脑上进行连接,比如我们上面安装了SSH工具,就可以按照如下方式连接到其它服务器。
Ubuntu 查询IP方式:ip addr show
或者 ip a
或者 ip addr ls
语法:ssh -p端口 远程主机用户名@IP地址
比如:ssh -p22 tom@192.168.159.138
》第一次连接时,将看到下面的信息:
The authenticity of host '192.168.159.138 (192.168.159.138)' can't be established.
ED25519 key fingerprint is SHA256:N+QfW1wzRG1FZ7ZAPDrSpzW7WseddKjd9zlLoGgetgo.
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 '192.168.159.138' (ED25519) to the list of known hosts.
tom@192.168.159.138's password:
》输入正确密码后会看到默认的Ubuntu消息:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
......
2. 基于密钥验证连接
使用密钥登录可以提供更高的安全性,而且可以免去记忆密码的烦恼,其次还有一个重要的就是防止密码暴力破解,因为密码登录存在被暴力破解的风险,特别是当远程登录服务暴露在公网时。而使用密钥登录可以有效防止密码暴力破解攻击,因为私钥相对于密码来说更难以被猜测或破解。
所以默认通过ssh客户端命令登录远程服务器,需要提供远程系统上的帐号与密码,但为了降低密码泄露的机率和提高登陆的方便性,建议使用密钥验证方式。
【#### 操作步骤 ####】
Ⅰ:首先看看本地有没有公钥:
cat ~/.ssh/id_rsa.pub
打印如下就没有公钥:cat: /home/jack/.ssh/id_rsa.pub: No such file or directory
Ⅱ:若查看为空的话则需要生成一个(一路回车三次即可,要看详情则看下面的补充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 24.04 (LTS) 版本下开启root用户登录。
若使用的是 Ubuntu 22.04 及以下则无需操作这一部分,只需处理最后一个框
》》》:为了更好编辑文件则使用vim
执行: sudo apt install vim
Ⅰ:在普通用户下为root用户设置密码(这里我的密码是“1234qwer.”)
sudo passwd root
Ⅱ:测试之前的root用户是否可以登录(成功后执行exit退出)
su -
>> 到这也就完成了root用户的设置,我们注销当前用户重新选择root用户即可完成登录。<<
'注意:若不是 Ubuntu 22.04(LTS) 或 Ubuntu 24.04(LTS) 版本的则需要设置如下信息:'
'注意:下面的文件若找不到则可以找名称类似的文件进行修改测试。'
'下面的这个以:Ubuntu 23.10 版本测试:'
Ⅲ:修改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
我们已经成功在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服务器的设置,
如允许的协议版本、登录认证方法、加密方式等