ssh 实用教程与安全防护

什么是 ssh

ssh,又叫 Secure Shell,我的理解主要就是远程登录一台类 Unix(Linux、BSD、MacOS)机器,并通过命令行进行控制。

这个词有的时候会在一些电子产品的破解中,伴随着 root 这个词出现,比如小米路由器、玩客云等。因为这些电子产品运行着 Linux 系统,只要在同一个局域网下,理论上就可以进行“远程控制”,但是厂商显然不大希望消费者进去瞎操作,所以远程登录命令行的功能会关闭或者做一些隐藏,那就需要想办法把这个功能再开起来,通常也伴随着各类权限的处理。
当然这个部分就不在这篇文档的范畴之内了。

对于正常的远程服务器,ssh 服务肯定是开启的,主流 Linux 分发版本也都自带了这个功能,所以基本上不用考虑安装的问题。

ssh 客户端使用

基础连接

通常你的手上有一台 Windows、Linux 或 Mac 电脑,当你想要连接、控制一台远程计算机,首先你需要知道:

  • 远程登录的用户名是什么?用户密码是什么?
  • 远程计算机的地址是什么?可以是域名、局域网 IP 或者公网 IP
  • ssh 服务开启的端口是什么?

每个系统都有自己的 ssh 客户端,用于连接 ssh 服务器(也就是你需要控制的远程计算机),例如 Windows 上的 PuTTY,Mac 命令行、Linux 命令行,搜索 Android 和苹果的应用市场,也会发现移动端的 ssh 客户端工具。
这里仅针对命令行说明:

ssh 用户名@地址 -p 端口
# 然后你需要输入密码并回车,这里密码不会出现在命令行中

# ...此处是各类远程操作

# 退出远程控制
exit

快捷登录

如果你觉得输入这么多信息太麻烦了,那么可以为某个远程计算机设置“别名”,从而可以快捷登录。这一条主要针对 Mac、Linux 客户端的命令行。

vi ~/.ssh/known_hosts

在文件中为远程计算机设置

Host 别名
Hostname 远程计算机的地址(IP 或域名)
User 远程计算机的用户
Port 端口

如果有多个远程计算机,当然也可以设置多条,这样下次使用 ssh 时,就可以直接

ssh 别名
# 然后输入密码

免密码登录

这个需要配合远程计算机来实现,基本思路是:

  • 生成本地机器的密钥
  • 将公钥部分,添加到远程计算机的“授信名单”中
# 生成密钥
ssh-keygen
# 把公钥复制出来,添加到远程计算机的授信名单中
cat ~/.ssh/id_dsa.pub | ssh 用户名@远程地址 -p 端口 'cat >> ~/.ssh/authorized_keys'

与远程计算机互传文件

这里主要介绍命令行控制。可以通过 scp 指令来完成

scp 源文件 目标地址

# 这里的源文件和目标地址都可以本地或远程的,例如
scp 远程计算机别名:文件路径 本地路径 # 将远程计算机中的文件复制到本地
scp 本地文件路径 远程计算机别名:路径 # 将本地文件复制到远程计算机路径中

# 如果没有设置远程计算机的别名,那么
scp -P 端口 用户名:地址:文件路径 本地路径
scp -P 端口 本地文件路径 用户名:地址:路径

# 复制文件夹,需要使用 -r 选项,例如
scp -r 本地文件夹 远程计算机别名:路径

远程计算机安全保护

如果远程计算机只能在内网中连接,可能还相对安全,但是如果远程计算机处于公网环境中,就很可能被攻击,一旦被不怀好意者成功控制,后果不堪设想,因此,我们需要针对 ssh 做一些安全防护。

使用复杂密码

修改远程计算机用户的密码

passwd 用户名

使用 sshd 自带的服务

主要有两点:

  1. 修改 ssh 端口,不适用默认的 22 端口,减少暴力破解的概率
  2. 仅允许“授信名单”中的客户端进行连接
vi /etc/ssh/sshd_config

修改或添加配置

Port 端口名 # 例如 22960
PubkeyAuthentication yes # 允许通过公钥进行认证
PasswordAuthentication no # 不允许使用用户密码登录

保存配置后,要记得重启

sudo systemctl restart sshd

封禁暴力登录行为

安装服务 fail2ban

sudo apt install fail2ban

默认情况下无需额外配置,当然也可以通过 /etc/fail2ban/jail.local 进行配置

[sshd]
# 设置封禁时间,单位秒
bantime = 300
# 设置最大重试次数
maxretry=3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值