本地 SSH 连接教程叶寻2021年10月9日(修改于2022年6月6日)目次安装 OpenSSH使用 SSH 密钥登陆禁止密码登陆用 UFW 防火墙限制 IP查看 SSH 连接禁用 SSH 服务终止 SSH 连接终止 1 个 SSH 连接终止所有连接参考资料延伸阅读Secure Shell(安全外壳协议,简称 SSH )是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH 通过在网络中创建安全隧道来实现 SSH 客户端与服务器之间的连接。SSH 最常见的用途是远程登录系统,人们通常利用 SSH 来传输命令行界面和远程执行命令。
——Secure Shell - 维基百科,自由的百科全书
本地电脑直接操作就可以了,为什么我还要用 SSH 连接呢?因为这样很酷我懒得从椅子上起来走到另一台电脑操作。本文把被连接的电脑称为服务端,另一台为客户端。开始操作前请确保两台电脑处于同一个网络。
安装 OpenSSH #在两台电脑安装 OpenSSH
1
sudo pacman -Syu openssh
在服务端启用 SSH 服务
1
2
3
4
5
6
7
8
9
# 启用 sshd.service
sudo systemctl start sshd.service
# 开机启动
sudo systemctl enable sshd.service
# 关闭开机启动
# sudo systemctl disable sshd.service
# 关闭 sshd.service
# sudo systemctl stop sshd.service
查看状态
1
2
3
4
❯ systemctl status sshd.service
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: disabled)
Active: active (running)
显示 Active: active 就说明成功了
查看服务端本地 IP 地址
1
2
ip route get 1.2.3.4 | awk '{print $7}'
# 192.168.3.100
用 ip addr 查看也行
客户端连接服务端
1
ssh [email protected]
使用 SSH 密钥登陆 #用 SSH 密钥登陆就可以不输入密码登陆了。
在客户端生成 SSH 密钥
1
2
ssh-keygen -t ed25519 -C "your computer model"
# 一直按 Enter 就行
查看并复制 SSH 公钥
1
2
❯ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHY84a2KfbwfkkKyoSvQk+thsKITpmdFzNbYoCs0SlkU magicbook14
连接服务端
1
ssh [email protected]
导入 SSH 公钥
1
2
3
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHY84a2KfbwfkkKyoSvQk+thsKITpmdFzNbYoCs0SlkU magicbook14' >> ~/.ssh/authorized_keys
禁止密码登陆 #禁用密码登陆后别人就不能暴力破解密码了,更加安全。接下来使用服务端操作,用客户端 SSH 连接操作也行。
1
2
# 备份配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
1
2
# 修改配置
sudo nano /etc/ssh/sshd_config
在里面加入:
1
PasswordAuthentication no
1
2
3
4
# 重启 sshd.service
sudo systemctl restart sshd.service
# 终止原有连接
pkill sshd
用 UFW 防火墙限制 IP #使用服务端操作,配置并启用 UFW 后只允许特定 IP 访问,例如 192.168.3.177。
1
2
3
4
5
6
# 禁止入站连接(外部访问)
sudo ufw default deny incoming
# 允许 192.168.3.177 访问
sudo ufw allow from 192.168.3.177
# 终止原有连接
pkill sshd
查看 SSH 连接 #1
ss | grep ssh
禁用 SSH 服务 #1
sudo systemctl stop sshd.service
禁用服务不会终止已有 SSH 连接,要执行以下命令终止所有连接。
1
pkill sshd
终止 SSH 连接 #终止 1 个 SSH 连接 # 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看用户,pts/1 就是 SSH 连接
❯ w
18:20:06 up 1:08, 2 users, load average: 0.92, 0.54, 0.43
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
hunter tty1 17:12 1:08m 53.14s 0.06s /usr/bin/startplasma-x11
hunter pts/1 18:18 14.00s 0.47s 0.47s -zsh
# 终止进程
❯ pkill -9 -t pts/1
# 查看用户,现在没有 SSH 连接了
❯ w
18:22:23 up 1:10, 1 user, load average: 0.44, 0.48, 0.42
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
hunter tty1 17:12 1:10m 58.05s 0.06s /usr/bin/startplasma-x11
终止所有连接 #1
pkill sshd
参考资料 #11.10 - How can I setup SSH so that it is restricted to my local network? - Ask Ubuntunetworking - Connect two computers with SSH in a home LAN - Ask UbuntuHow to kill SSH user sessions - GrepitoutHow to Kill Inactive or Idle SSH sessions in Linux | 2DayGeek延伸阅读 #SSH 教程 - 网道话题:Linux上篇:以 WPS 为例,手动构建和安装 AUR 的包
下篇:给本地电脑配置 UFW(Uncomplicated Firewall)防火墙giscus 评论。如果评论未加载,giscus 可能被你的互联网服务提供商屏蔽。
Disqus 评论。如果评论未加载,Disqus 可能被你的互联网服务提供商屏蔽。