Ubuntu20.04上安装配置openssh-server
本文将介绍在Ubuntu20.04 Desktop上安装并配置使用openssh-server
1. 安装ssh
sudo apt-get install openssh-server
2. 修改配置文件"/etc/ssh/sshd_config"
#使用超级用户权限编辑ssh配置文件
sudo vim /etc/ssh/sshd_config
#/etc/ssh/sshd_config
#其它根据个人需要进行修改,本文只介绍最基本的ssh配置
#Port 22 #ssh的端口设置,建议修改,可以避免端口扫描
Port 22222 #建议修改为5位数的端口,此处 22222 端口仅作为示例,请根据实际自行修改
#PermitRootLogin prohibit-password
PermitRootLogin no #禁止使用root用户连接
- 若修改过端口设置需要建立防火墙规则
[注]: 若未修改端口,在启动ssh服务后,客户端依然无法连接到服务器,应该是22端口被防火墙屏蔽所致,需按照以下步骤建立22端口的防火墙入站规则(即将以下22222修改为22)
#若 firewalld 未安装,请先安装
sudo apt-get install firewalld
#设置允许 tcp 22222 端口
sudo firewall-cmd --permanent --add-port=22222/tcp
#设置允许 ssh 服务 (可选)
sudo firewall-cmd --permanent --add-service=ssh
# reload firewall, 更新应用新规则
sudo systemctl reload firewalld
2.1. 补充
执行sudo firewall-cmd --permanent --add-port=22222
这条命令时有可能会出现下面这样的错误。
imaginemiracle@:$ sudo firewall-cmd --permanent --add-port=22222
Error: INVALID_PORT: bad port (most likely missing protocol), correct syntax is portid[-portid]/protocol
这是因为给firewall
新增许可规则时未声明协议类型,补充协议类型后即可正常设置。([注]:协议类型包括{'tcp'|'udp'|'sctp'|'dccp'}
)
sudo firewall-cmd --permanent --add-port=22222/tcp
2.2. 小知识
- 不小心搞错了怎么办
若不小心写错了端口号,可以使用下面命令移除添加的相关端口规则
sudo firewall-cmd --permanent --remove-port=22222/tcp
- 防火墙没开怎么办
“firewallD is not running”
有时候命令输了半天,敲下回车Enter
,报如下错误则说明防火墙没打开。
firewallD is not running
这个时候只需要打开防火墙即可,打开/关闭的相关命令如下:
# 开启防火墙
imaginemiracle@:~$ sudo systemctl start firewalld
# 关闭防火墙
imaginemiracle@:~$ sudo systemctl stop firewalld
# 查看防火墙状态
imaginemiracle@:~$ sudo systemctl status firewalld
2.4. 验证22222端口是否开启
imaginemiracle@:~$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eno1
sources:
services: dhcpv6-client ssh
ports: 22222/tcp #从这里看出防火墙已允许22222端口通过
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
3. 启动openssh-server
#启动 ssh 服务
:$ sudo /etc/init.d/ssh start
Starting ssh (via systemctl): ssh.service.
#查看 ssh 服务状态
:$ sudo /etc/init.d/ssh status
如下图,active则表示正在运行
4. 远端连接ssh
#不指定用户连接 [命令: ssh 服务端IP]
ssh 192.168.1.233
#指定用户连接 [命令: ssh UserName@ServerIP]
ssh imaginemiracle@192.168.1.233
#制定端口连接 [命令: ssh -p Port UserName@ServerIP]
ssh -p 22222 imaginemiracle@192.168.1.233
5. 加强防护
若想进一步的保护自己的服务器,很多时候我们只希望允许某一个 IP
的机器或者某段 IP
的机器通过 ssh
访问服务器,这个时候可以利用防火墙来限制。
如,开放指定 IP
可访问 ssh
端口:
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22222" accept"
开放指定 IP
段可访问 ssh
端口:
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0" port protocol="tcp" port="22222" accept"
禁止某个 IP
访问 ssh
端口:
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.101" port protocol="tcp" port="22222" reject"
禁止某个 IP
段的机器访问 ssh
端口:
sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.2.0" port protocol="tcp" port="22222" reject"
设置完成后重新加载防火墙配置规则:
sudo firewall-cmd --reload
查看设置的规则:
sudo firewall-cmd --list-rich-rules
到此!恭喜你又学会了一项技能!