SSH 教程
1.Windows 安装 SSH 工具
1.1 方式一、使用 OpenSSH
可以直接搭配 Windows 的 PowerShell 使用,很轻量,但是功能少。配置方式可以参考我写的这篇文章:Win10 SSH 服务配置
1.2 方式二、使用 MobaXterm (推荐)
本人用了下,效果还不错,就是没有中文。下载地址:MobaXterm
1.3 方式三、使用 WindTerm (开源)
支持中文,在 GitHub 开源。下载地址:WindTerm
1.4 方式三、其他
Linux 下直接下载 OpenSSH 就行了,使用zsh
或者bash
终端。
其他 SSH 连接工具推荐:视频地址
2.远程主机的配置
2.1 安装 OpenSSH
Linux 一般默认安装上的,如果没有,可以手动安装,这里以 Arch 系 Linux 为例:
1 | sudo pacman -S openssh |
2.2 开启 SSH 服务
让 sshd 开机自启动:
1
sudo systemctl enable sshd
开启 sshd 服务:
1
sudo systemctl start sshd
查看是否启动成功:
1
sudo systemctl status sshd
2.3 配置防火墙(一定要配置)
ufw
防火墙:1
sudo ufw allow ssh
iptables
防火墙:1
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
firewalld
防火墙:
显示firewalld
的当前防火墙配置状态:1
sudo firewall-cmd --list-all
通常会显示以下信息:
interfaces
: 显示与当前区域关联的网络接口。sources
: 显示与当前区域关联的 IP 源地址或子网。services
: 显示允许的服务列表(例如ssh
,http
,https
等)。ports
: 显示手动添加的开放端口及其协议(例如22/tcp
,80/tcp
等)。protocols
: 显示允许的协议(通常包括ipv4
和ipv6
)。zone
: 当前配置的区域名称。forward
: 显示转发规则(如果有的话)。masquerade
: 显示是否启用网络地址转换(NAT)。
确保22
端口被开放:
1 | sudo firewall-cmd --add-service=ssh --permanent |
也可以检查 SSH 配置文件:
1 | sudo nano /etc/ssh/sshd_config |
2.4 查看日志
如果你遇到任何问题,可以查看 SSH 服务的日志以获取更多信息:
1 | sudo journalctl -u sshd |
3.常用指令
3.1 与远程主机进行连接
1 | ssh <用户名>@<远程主机 IP 地址> |
3.2 检查与远程代码仓库的连接
这里以 GitHub 为例:
1 | ssh -T git@github.com |
显示以下内容表示连接成功:Hi loskyertt! You've successfully authenticated, but GitHub does not provide shell access.
3.3 传输文件
使用 scp
命令可以通过 SSH 传输文件,scp
是 Secure Copy Protocol 的缩写。
示例:
从本地计算机复制文件到远程计算机 :
1
scp localfile.txt username@remote_host:/path/to/remote/directory/
这里
localfile.txt
是要复制的本地文件,username
是远程计算机上的用户名,remote_host
是远程计算机的 IP 地址或主机名,/path/to/remote/directory/
是远程计算机上的目标目录。从远程计算机复制文件到本地计算机 :
1
scp username@remote_host:/path/to/remote/file.txt /path/to/local/directory/
复制目录及其内容 :
使用-r
选项可以递归地复制目录及其内容。1
scp -r local_directory username@remote_host:/path/to/remote/directory/
4.问题汇总
4.1 远程主机密钥更改
4.1.1 问题示例
1 | 24-08-14 16:10:00 [sky@~] |
出现这种警告表明你尝试连接的远程主机的 SSH 密钥已经发生了变化。这种情况可能有几种原因:
主机密钥确实更改了:远程服务器可能因为重新安装了操作系统、重新生成了密钥对或者更改了 SSH 配置而更换了主机密钥。
可能的安全风险:如果你没有预期到主机密钥的变化,可能有人试图进行中间人攻击(Man-in-the-Middle Attack),这意味着有人可能在试图窃听你的连接。
4.1.2 解决步骤
- 确认更改的原因
如果你对主机密钥更改有充分的理由(例如,你知道服务器进行了重新安装或者密钥更新),你可以安全地更新你的本地 known_hosts
文件。
- 删除旧的密钥
你可以手动编辑 ~/.ssh/known_hosts
文件,删除对应的旧密钥。
打开 known_hosts
文件:
1 | nano ~/.ssh/known_hosts |
查找并删除第6行(或者显示的“Offending ECDSA key”所在的行),这行对应于你连接的服务器的旧密钥。
保存文件并退出编辑器。
如果你更喜欢使用命令行工具,你可以使用以下命令删除该行:
1 | sed -i '6d' ~/.ssh/known_hosts |
注意:此命令会删除 known_hosts
文件中的第6行。
- 再次连接服务器
删除旧密钥后,重新尝试连接服务器:
1 | ssh root@124.15.31.104 |
你将会看到提示要求确认新的主机密钥。确保你确认这个新的密钥是合法的。如果确定是合法的,可以输入 yes
来接受新的密钥并将其添加到 known_hosts
文件中。
- Title: SSH 教程
- Author: loskyertt
- Created at : 2024-08-16 17:04:17
- Updated at : 2024-11-13 03:07:10
- Link: https://redefine.ohevan.com/2024/08/16/SSH 教程/
- License: This work is licensed under CC BY-NC-SA 4.0.