如今 SSH 已成为了登录远程服务器的默认方式。
SSH 的全称是 “安全的 ShellSecure Shell”,它功能强大、效率高,这个主流的网络协议用于在两个远程终端之间建立连接。让我们不要忘记它名称的“安全”部分,SSH 会加密所有的通信流量,以防止如劫持、窃听等攻击,同时提供不同的身份认证方式和无数个配置选项。
在这份新手指南中,你会学到:
SSH 的基本概念设置 SSH 服务器(在你想要远程登录的系统上)从客户端(你的电脑)通过 SSH 连接远程服务器<在学习配置过程前,让我们先了解一下 SSH 的全部基础概念。
SSH 协议基于客户端-服务器server-client(CS)架构。“服务器Server”允许“客户端Client”通过通信通道进行连接。该信道是经过加密的,信息交换通过 SSH 公私钥进行管理。
Image credit: SSH
OpenSSH是在 Linux、BSD 和 Windows 系统上提供 SSH 功能的最流行的开源工具之一。
想要成功配置 SSH,你需要:
在作为服务器的机器上部署 SSH 服务器组件,它由openssh-server
包提供。在你远程访问服务器的客户端机器上部署 SSH 客户端组件,它由openssh-client
包提供,大多数 Linux 和 BSD 发行版都已经预装好了。区分服务器和客户端是十分重要的事情。或许你不想要你的 PC 作为 SSH 服务器,除非你有充分理由希望其他人通过 SSH 连接你的系统。
通常来说,你有一个专用的服务器系统。例如,一个运行 Ubuntu 的树莓派。你可以启用树莓派的 SSH 服务,这样你可以在你 PC 中的终端中,通过 SSH 控制并管理该设备。
有了这些信息,让我们看看如何在 Ubuntu 上设置 SSH 服务器。
<设置 SSH 并不复杂,只需要以下几步。
sudo
权限的用户可以下载所需包的互联网连接在你的网络中至少有另一个系统。可以是局域网中的另一台电脑,远程服务器或者计算机中托管的虚拟机。再次强调,在你想要通过 SSH 远程登录的系统上安装 SSH 服务。
让我们从打开终端输入一些必要命令开始。
注意,在安装新的包或者软件前,要更新你的 Ubuntu 系统,以确保运行的是最新版本的程序。
sudo apt update && sudo apt upgrade
你要运行 SSH 服务器的包由 OpensSSH 的openssh-server
组件提供:
sudo apt install openssh-server
当你下载并安装完包后,SSH 服务器应该已经运行了,但是为了确保万无一失我们需要检查一下:
service ssh status
你还可以使用systemctl
命令:
sudo systemctl status ssh
你应该会看到这样的结果,其中active
是高亮的。输入q
退出该页面。
如果你的结果中 SSH 服务没有运行,使用这个命令运行它:
sudo systemctl enable --now ssh
Ubuntu 带有名为UFW(简单的防火墙Uncomplicated Firewall)的防火墙,这是管理网络规则的iptables
的一个接口。如果启动了防火墙,它可能会阻止你连接服务器。
想要配置 UFW 允许你的接入,你需要运行如下命令:
sudo ufw allow ssh
UFW 的运行状态可以通过运行sudo ufw status
来检查。
现在,我们的 SSH 服务器已经开始运行了,在等待来自客户端的连接。
<你本地的 Linux 系统已经安装了 SSH 客户端。如果没有,你可以在 Ubuntu 中使用如下命令安装:
sudo apt install openssh-client
要连接你的 Ubuntu 系统,你需要知道它的 IP 地址,然后使用ssh
命令,就像这样:
ssh username@address
将用户名(username
)改为你的系统上的实际用户名,并将地址(address
)改为你服务器的 IP 地址。
如果你不知道 IP 地址,可以在服务器的终端输入ip a
查看结果。应该会看到这样的结果:
Using “ip a” to find the IP address
可以看到我的 IP 地址是192.168.1.111
。让我们使用username@address
格式进行连接。
ssh team@192.168.1.111
这是你第一次连接到该 SSH 服务器,它会请求添加主机。输入yes
并回车即可。
First time connecting to the server
SSH 会立即告诉你该主机已经被永久添加了,并要求你输入指定用户的密码,输入密码并再次按回车即可。
Host added, now type in the password
瞧,你远程登录了你的 Ubuntu 系统!
Connected!
现在,你可以在远程服务器的终端里和寻常一样工作了。
你只需要输入exit
即可关闭连接,它会立马关闭不需要确认。
Closing the connection with “exit”
<如果你想要停止 SSH 服务,需要运行该命令:
sudo systemctl stop ssh
该命令会关闭 SSH 服务,直到重启它或者系统重启。想要重启它,输入:
sudo systemctl start ssh
现在,如果你想要禁止 SSH 跟随系统启动,使用该命令:
sudo systemctl disable ssh
该命令不会停止当前的 SSH 会话,只会在启动的时候生效。如果你想要它跟随系统启动,输入:
sudo systemctl enable ssh
从 Linux 到 macOS,大多数 *nix 系统中都有ssh
工具,但这并不是唯一的选项,这里有几个可以在其他操作系统中使用的客户端:
在这份指导中,你可以在 Ubuntu 系统中设置 SSH 作为服务器,允许来自你电脑的远程安全的连接,便于你通过命令行开展工作。
此,我推荐以下文章:
Linux SSH 入门教程利用 SSH 配置文件管理多个 SSH 连接向 SSH 服务器添加公钥以进行无密码身份验证保护你的 SSH 服务器的 SSH 加固技巧远程工作快乐!