在基于 Ubuntu 和 Debian 的发行版上安装和配置 OpenSSH

如果要在 Ubuntu 桌面上启用 SSH,请使用以下命令:

sudo apt install openssh-client

如果要在 Ubuntu 服务器上启用 SSH,请使用以下命令:

sudo apt install openssh-server

阅读文章的其余部分以获取更多详细信息。

每个系统 admin 并且开发人员已经体验到需要远程登录系统以实现更快的管理和调试目的。

在 IT 环境中,如今几乎所有的系统管理员任务都是通过远程登录来执行的。

不仅是系统管理员,即使是普通用户有时也需要远程登录服务器。

那么如何远程连接到 Linux 系统呢? 有多种工具可用于远程登录,但对于 Linux,SSH 是最受欢迎的选择。

SSH是安全外壳的缩写,是一种允许从一台计算机安全地远程登录到另一台计算机的协议。

现在的问题是如何在 Ubuntu 或 Debian 或您正在使用的任何其他 Linux 发行版上启用 SSH?

请记住,SSH 只是一个协议,并且该协议可以通过许多工具来实现,例如 lsh, 空降熊 等等,但最广泛使用的 SSH 工具是开源软件 OpenSSH。

在本教程中,您将了解如何安装 OpenSSH 并对其进行配置以在基于 Ubuntu 和 Debian 的 Linux 发行版上启用 SSH。 提到的步骤适用于 Ubuntu/Debian 的桌面版和服务器版。

我还建议阅读这篇文章以熟悉 SSH 的基础知识。

使用 OpenSSH 在 Ubuntu 和 Debian 上启用 SSH

正如我之前提到的, 开放SSH 是用于进行SSH登录的软件。 它侦听一个端口并对传入用户进行身份验证,并为远程用户创建一个新的 shell。

要使 SSH 工作,需要在用户需要登录的远程系统上运行 ssh 服务器。您还需要在本地系统中有一个 ssh 客户端,用户将从该客户端登录到远程系统。

OpenSSH 提供了这两种功能。 终端用户有 openssh-client,远程服务器有 openssh-server。

在安装 OpenSSH 之前,您应该检查 SSH 是否已经安装并在您的系统上运行。

检查 SSH 是否已启用并正在运行

更有可能您的系统上已经启用了 SSH。 要验证,请在远程服务器或最终用户系统上运行以下命令:

ps -aux | grep ssh

如果启用了 SSH,您应该会在桌面上看到有关 SSH 代理的信息:

ps -aux | grep ssh

abhishek  1736  0.0  0.0  11304    36 ?        Ss   08:18   0:00 /usr/bin/ssh-agent /usr/bin/im-launch env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu

abhishek 10462  0.0  0.0  21536  1044 pts/0    S+   10:15   0:00 grep --color=auto ssh

在服务器上,您应该看到有关正在运行的 SSH 守护程序的信息:

ps -aux | grep ssh

root       920  0.0  0.2  72296  6028 ?        Ss    2018   0:17 /usr/sbin/sshd -D

root     22708  0.0  0.3 108172  7364 ?        Ss   05:13   0:00 sshd: [email protected]/0

root     22873  0.0  0.0  14856  1068 pts/0    S+   05:14   0:00 grep --color=auto ssh

如果您没有看到与上述类似的输出,则您的系统上没有运行 SSH。 是时候安装 OpenSSH 了。

在 Ubuntu 和 Debian 上安装 OpenSSH

在继续安装 OpenSSH 之前,先简要介绍一下 openssh-client 和 openssh-server。

openssh客户端: 如果您想使用 SSH 连接到远程 Linux 系统,这是您需要的软件包。 这是您作为最终用户/桌面用户所需要的。

openssh服务器: 如果您想允许通过 SSH 远程登录到您的系统,这是您需要的软件包。 这是您在 Linux 服务器上所需要的。

请注意,安装 openssh-server 还可以让您通过 SSH 远程登录到其他系统。 换句话说,openssh-server 由 openssh-client 组成。 但是,如果您只是使用 Linux 桌面的最终用户,则(大多数情况下)不需要安装 openssh-server 并允许远程登录您的系统。

现在您知道了两者之间的区别,是时候看看如何安装它们了。

请注意,要在 Ubuntu 或 Debian 上安装 OpenSSH,您需要 sudo/root 权限。 如果您没有此类权限,请联系您的系统管理员。 您还可以阅读这篇关于创建的文章 sudo 用户。

为桌面或最终用户安装 OpenSSH

如果你只想通过 SSH 连接到其他远程系统,你应该使用以下命令安装 openssh-client 包:

sudo apt update
sudo apt install openssh-client

一旦你在你的系统上安装了 ssh,你就可以使用它了。 请参阅这篇详细的文章以了解如何使用 SSH。

为服务器安装 OpenSSH

如果您正在设置 Ubuntu/Debian 服务器,应安装 openssh-server 软件包,以便其他远程用户可以连接到您的系统。

sudo apt update
sudo apt install openssh-server

安装完 openssh-server 后,就该学习如何根据需要对其进行调整和配置了。

控制 SSH 守护进程 sshd(用于服务器)

您将拥有名为 SSH 守护程序 sshd 默认情况下已安装并启用在重新启动时自动启动。 systemctl 是控制 SSH 守护程序的几种方法之一。 了解更多关于 系统控制, 请参阅 本文.

启动 sshd 服务

只需发出以下命令即可启动该服务:

sudo systemctl start sshd

停止 sshd 服务

可以通过类似的方式停止服务:

sudo systemctl stop sshd

重启sshd服务

如果您希望停止和启动 sshd 服务(通常在将配置更改为 sshd 服务的情况下需要),您可以简单地使用以下命令:

sudo systemctl restart sshd

每次启动时自动在 Ubuntu 上启用 SSH

某些服务需要在重新启动时启动,以避免手动交互以及是否经常使用。 这对于像这样的服务非常重要 Apachemongod, mysqld, sshd 在服务器中。

如果要为 sshd 启用此类自动启动,请使用:

sudo systemctl enable sshd

重新启动时禁用 SSH 自动启动

如果您不希望 sshd 在重新启动时自动启动,请使用

sudo systemctl disable sshd

每当您对 ssh 服务进行更改(例如更改端口)时,都需要上述四个提示。 您可以使用上述命令管理任何服务(如 mysqld、mongod、apache),并将服务名称 sshd 替换为目标服务。

提示:即使您的 SSH 连接断开,您也可以使用 nohup 命令继续运行命令。

配置 SSH(用于服务器)

到目前为止,我们的 ssh 服务将在端口 22 上进行侦听,并准备好在存储密钥后对任何用户(也是 root)进行身份验证。

如果要更改端口等任何配置以侦听连接,可以编辑文件“/etc/ssh/sshd_config” 通过添加、删除、注释或取消注释这些行,然后重新启动 sshd 服务。

有很多选项可以配置。 我已经创建了一个最有可能需要的配置列表。

1.更改默认SSH端口

通常,sshd 服务侦听 TCP 端口 22。如果需要,可以通过在 / 中添加/编辑以下行将 SSH 端口更改为 5678等/ssh/ssh_config。

Port 5678

重新启动服务以立即查看更改。

2.禁用通过SSH的root登录

由于安全原因,允许 root 用户通过 ssh 进行身份验证并不是一个好主意。 sudo 用户可以远程登录,但不能 作为 处于安全食物链的顶端。

可以通过添加(如果尚未存在)以下行并重新启动服务来禁用 Root 登录。

PermitRootLogin no

如果该行已经存在,则确保它没有被注释掉。

3. 允许基于 SSH 密钥的身份验证

您可能希望允许 基于 ssh 密钥的身份验证 这样最终用户就不必一直输入密码。 只需使用 ssh [email protected] 足以登录远程系统。

为此,您应该配置 SSH 以允许公钥身份验证:

PubkeyAuthentication yes 

如果该行已经存在,则确保它没有被注释掉。

现在,如果您想允许特定系统通过公钥登录,您需要在文件中添加最终用户的公钥 .ssh/authorized_keys.

您可以借助以下工具制作 ssh 密钥(公钥和私钥) ssh-keygen. 要了解有关密钥生成的更多信息,请参阅此 很好的资源.

您可以通过任何您喜欢的方式将最终用户的公钥传输到远程服务器。 如果您愿意,可以使用 scp 命令,或者直接通过 FTP 获取它。 这真的取决于你。

以上三个是最需要的,但如果您想进一步更改,请参考 的手册页 sshd_config.

结论

我认为这是一份足够好的阅读材料,可以了解如何在 Ubuntu/Debian 上启用 SSH 以及如何在服务器上配置 SSH 以进行远程登录。

在相关文章中,您可以参考这篇文章,详细介绍由于在系统之间复制公钥而出现的 SSH 错误。

如果您觉得这篇文章有用,请与您的朋友分享。 如果您有任何建议或意见,或者您认为我遗漏了什么,请随时在下面发表评论。