SSH服务器搭建教程
一、SSH简介
SSH(Secure Shell)是一种用于在不安全网络中安全地进行远程访问和文件传输的加密协议,通过使用SSH,可以对所有传输的数据进行加密,从而保护其免受窃听、连接劫持和其他攻击,SSH还支持身份验证机制,确保只有授权用户可以访问远程系统。
二、SSH的基本概念
1、客户端(Client):指连接到远程服务器的计算机,通常是用户自己的计算机。
2、服务器(Server):指远程主机,用户希望远程访问的计算机。
3、会话(Session):指客户端与服务器之间建立的连接,用户可以在会话中执行命令、传输文件等操作。
4、端口(Port):指网络通信中的一个逻辑连接点,SSH默认使用22端口进行通信。
5、密钥对(Key Pair):由公钥和私钥组成的一对密钥,用于加密和解密通信内容以及进行身份验证。
三、安装SSH服务器
更新软件包列表
在安装任何软件之前,最好先更新一下系统的软件包列表,以确保安装的软件是最新的版本,打开终端,执行以下命令:
sudo apt update
安装OpenSSH服务器
在Ubuntu中,OpenSSH是最常见的SSH服务器实现,您可以使用以下命令安装OpenSSH服务器:
sudo apt install openssh-server
系统会提示您输入密码以确认安装,输入密码后按下Enter键继续。
检查SSH服务器状态
安装完成后,SSH服务器会自动启动,您可以使用以下命令检查SSH服务器的状态:
sudo systemctl status ssh
如果SSH服务器正在运行,您将看到类似如下的输出:
● ssh.service OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-04-09 14:30:00 UTC; 1min 30s ago Docs: man:sshd(8) man:sshd_config(5) Process: 12345 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS) Main PID: 12346 (sshd) Tasks: 1 (limit: 4567) Memory: 2.2M CPU: 50ms CGroup: /system.slice/ssh.service └─12346 /usr/sbin/sshd -D Apr 09 14:30:00 ubuntu systemd[1]: Starting OpenBSD Secure Shell server... Apr 09 14:30:00 ubuntu sshd[12346]: Server listening on 0.0.0.0 port 22. Apr 09 14:30:00 ubuntu sshd[12346]: Server listening on :: port 22. Apr 09 14:30:00 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
您可以看到Active: active (running)
,表示SSH服务器正在运行。
四、配置SSH服务器(可选)
修改默认端口号
为了增强安全性,可以更改SSH服务的默认端口22,编辑配置文件/etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
找到以下行并修改:
#Port 22
取消注释并更改为其他端口号,
Port 2222
保存文件并退出编辑器后,重启SSH服务使更改生效:
sudo systemctl restart ssh
禁止Root登录
出于安全考虑,建议禁止通过SSH以root用户身份直接登录,找到配置文件中的PermitRootLogin
一行,并将其设置为no
:
PermitRootLogin no
保存文件并退出编辑器,然后重启SSH服务:
sudo systemctl restart ssh
允许特定用户登录
如果只想允许特定用户通过SSH登录,可以编辑/etc/ssh/sshd_config
文件,设置AllowUsers
或AllowGroups
选项,只允许用户alice
和bob
登录:
AllowUsers alice bob
或者,只允许属于sshusers
组的用户登录:
AllowGroups sshusers
保存文件并重启SSH服务:
sudo systemctl restart ssh
五、允许SSH通过防火墙
在Ubuntu中,通常使用UFW(Uncomplicated Firewall)来管理防火墙规则,确保SSH服务可以通过防火墙进行通信非常重要。
检查防火墙状态
检查防火墙是否已经启用:
sudo ufw status
如果防火墙尚未启用,您会看到类似如下的输出:
Status: inactive
允许SSH通过防火墙
如果防火墙已启用但未允许SSH通过,则需要执行以下命令来添加SSH规则:
sudo ufw allow OpenSSH
如果您更改了SSH的默认端口,则需要允许那个特定的端口而不是22,如果使用2222端口,则执行:
sudo ufw allow 2222/tcp
启用防火墙(如果尚未启用)
如果防火墙尚未启用,需要执行以下命令来启用防火墙:
sudo ufw enable
您将收到一个提示,询问是否继续启用防火墙,输入y
并按下Enter键继续。
验证防火墙规则
再次运行sudo ufw status
命令来验证SSH是否已成功添加到防火墙规则中,如果一切正常,您应该会看到类似以下的输出:
Status: active To Action From - ----- ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
这表示防火墙已启用,并且允许SSH服务通过。
六、连接到SSH服务器
要从另一台计算机连接到您的SSH服务器,可以使用以下命令格式:
ssh username@server-ip-address
其中username
是你想要登录的Ubuntu系统上的用户账号,server-ip-address
是服务器的IP地址。
ssh alice@192.168.1.100
如果是第一次连接到该服务器,你可能会看到一个消息询问是否接受主机的公钥,输入yes
以继续并添加主机到你的known_hosts文件,然后输入用户的密码即可完成连接。