Linux下完美配置SSH远程连接

1. 安装OpenSSH服务

要在Linux系统上配置SSH远程连接,首先需要安装OpenSSH服务。OpenSSH是一个开源的SSH实现,支持远程登录和文件传输。

在大多数Linux发行版中,可以使用包管理器安装OpenSSH。以Debian或Ubuntu系统为例,可以使用以下命令安装:

sudo apt-get update

sudo apt-get install openssh-server

安装完成后,OpenSSH服务将自动启动。可以使用以下命令检查服务状态:

systemctl status sshd

如果服务正在运行,应该看到类似于下面的输出:

● sshd.service - OpenSSH server daemon

Loaded: loaded (/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)

Active: active (running) since Thu 2021-07-01 10:00:00 UTC; 10s ago

Docs: man:sshd(8)

man:sshd_config(5)

Main PID: 12345 (sshd)

Tasks: 1 (limit: 123)

CGroup: /system.slice/sshd.service

└─12345 /usr/sbin/sshd -D

这表明OpenSSH服务已经成功安装并正在运行。

2. 配置防火墙

为了允许SSH连接进入Linux系统,需要配置防火墙以允许SSH流量通过。大多数Linux系统使用iptables或nftables作为防火墙管理工具。

2.1 iptables

如果使用iptables作为防火墙管理工具,可以使用以下命令允许SSH流量:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

sudo iptables-save | sudo tee /etc/iptables/rules.v4

这将在iptables规则中添加一条允许TCP端口22的规则,并将规则保存到/etc/iptables/rules.v4文件中。

要持久保存iptables规则,可以使用以下命令:

sudo apt-get install iptables-persistent

安装完成后,iptables规则将在系统启动时自动加载。

2.2 nftables

如果使用nftables作为防火墙管理工具,可以使用以下命令允许SSH流量:

sudo nft add rule ip filter input tcp dport 22 accept

sudo systemctl enable nftables

sudo systemctl start nftables

这将添加一条允许TCP端口22的规则,并启用nftables服务。

3. 配置SSH服务

配置SSH服务可以定制SSH连接的行为和安全性设置。

3.1 修改SSH配置文件

SSH的配置文件位于/etc/ssh/sshd_config。可以使用文本编辑器(如vi或nano)打开此文件,并根据需要进行修改。

以下是一些常见的SSH配置选项:

Port:SSH服务监听的端口号。默认为22,可以修改为其他非常用端口号以增加安全性。

PermitRootLogin:是否允许以root用户登录SSH。建议禁止root登录以增加安全性。

PasswordAuthentication:是否允许使用密码进行身份验证。建议禁止密码身份验证,并使用公钥身份验证。

PubkeyAuthentication:是否允许使用公钥进行身份验证。建议启用此选项。

AllowUsers:限制允许使用SSH登录的用户列表。可以使用用户名或用户名的模式匹配。

修改完成后,保存文件并退出编辑器。

3.2 重启SSH服务

在修改完SSH配置文件后,需要重新启动SSH服务以使更改生效。可以使用以下命令重启SSH服务:

sudo systemctl restart sshd

现在,SSH服务已根据配置文件进行了相应的修改和重启。

4. 连接到SSH服务器

配置完SSH服务后,可以使用SSH客户端连接到远程Linux系统。

在Linux系统上,可以使用以下命令连接到SSH服务器:

ssh username@remote_host

其中,username是远程Linux系统上的用户名,remote_host是远程Linux系统的主机名或IP地址。

如果配置了非默认的SSH端口号,可以使用“-p”选项指定端口号:

操作系统标签