【Linux】用 SSH 协议远程联机

摘要

本文探讨如何在 Linux 中远程联机。

引言

Linux 通常使用 SSH 协议进行远程联机。SSH 的全称是 Secure Shell,其主要目的是在非安全的网络上,提供安全的远程登录和数据传输服务。

使用 SSH 的原因是传统的远程联机协议,如 Rlogin 或 Telnet 在本质上都是不安全的。因为它们在网络上以明文传送数据,用户账号和用户口令很容易受到中间人攻击方式的攻击。就是存在另一台主机,冒充真正的服务器给用户提供服务,或冒充真正的用户向服务器请求服务。

SSH 对所有传输的数据进行加密,使用 SSH 协议能够有效防止远程管理过程中信息泄露的问题。

准备

在 CentOS 中,我们使用的 SSH 服务套件叫做 openssh。正常情况下,CentOS 6 及以上版本都会默认安装 SSH 服务器套件。

服务器套件包含多个软件包,其中必须要有的是 openssh 和 openssh-server,这是我们的核心。使用命令 yum list iinstalled | grep openssh 确认是否安装。如果没有安装,使用命令 yum -y install openssh 安装即可。

接下来就是启动 SSH 服务了。openssh-server 的守护进程名为 sshd,通过 systemctl 命令可以管理守护进程,具体的用法如下:

systemctl status sshd # 查看服务状态
systemctl start sshd # 启动服务
systemctl is-enabled sshd # 设置开机自启动

开启 sshd 服务后,我们就能通过客户端进行远程连接了。

用法

我们以 Windows 客户端为例,展示如何进行远程联机。(目前所有系统基本都自带 openssh 套件,Windows 7 及较低版本除外)

远程联机需要知道远程主机的 IP 地址,系统管理员分配的登录用户名及登录密码。假设远程主机 IP 为 49.233.46.230,以 root 用户身份进行远程登录,开放端口为 22。

打开 Windows 的 CMD,执行以下命令,并按提示输入 root 用户的密码即可登录:

$ ssh [email protected] -p 22
The authenticity of host '49.233.46.230 (49.233.46.230)' can't be established.
ECDSA key fingerprint is SHA256:MKMuFZc8IYxBaFVl6WImYXzFR35fIuWp3013+e/OMtg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '49.233.46.230' (ECDSA) to the list of known hosts.
[email protected]'s password:

提示

我们还可以通过一些配置来提高 SSH 服务器的安全性。

SSH 协议确实是一个安全的协议,这并不等于 SSH 服务是一个安全的服务。一个没有经过良好配置的 SSH 服务器,仍然是黑客下手的好对象。

我们主要通过对 SSH 服务器本身进行配置来提高其安全级别,openssh 服务器的主要配置文件为 /etc/ssh/sshd_config,使用 vi 命令打开该文件并添加如下几行配置:

PermitRootLogin no # 表示不接受 root 用户的远程连接
PermitEmptyPasswords no # 表示不接受口令为空的用户的远程连接
ClientAliveInterval 30 # 当客户端 30 秒没有动作,服务器将发送 Alive 消息给客户端 
ClientAliveCountMax 3 # 如果连发 4 此 Alive 消息,客户端仍然没有动作,服务器将断开连接

改动完成后,保存退出。用以下命令重启 sshd 使得改动生效:

systemctl restart sshd

当然,上述改动也会造成 root 用户无法远程登录主机,并且可能会导致服务器一直需要重连。因此,为方便起见,无需更改 /etc/ssh/sshd_config,使用默认的就行。

参考

中国大学 MOOC | Linux 系统管理 | 主题 11 用好远程联机服务器 | 小节 1 用 SSH 协议远程联机

猜你喜欢

转载自blog.csdn.net/qq_42951560/article/details/125229946