SSH入门:远程访问设置,使用密钥
1. 什么是 SSH?
想象一下,你在地球的一端,而需要配置的服务器在另一端。学校 IT 专家的跑来跑去搞设备的工作方式可不是我们想要的。好在有 SSH (Secure SHell) —— 这是一个用来远程管理服务器的工具。
SSH 是一个网络协议,允许安全连接远程电脑。连接过程使用加密,这意味着传输的数据是被保护的,不会被别人偷看。SSH 取代了像 Telnet 这样的旧方法,它们传输数据是明文的(就像中国邮政明信片一样)。
SSH 的优点
- 安全性. SSH 使用加密技术,保护数据免被截获。
- 灵活性. 远程管理服务器、传输文件、创建隧道 —— 这些都可以通过 SSH 实现。
- 跨平台. 可以在 Linux、Windows(包括 WSL)、MacOS 上运行。
现在,你已经明白 SSH 的用途了,我们来开始实际操作吧。
2. 安装 SSH 客户端
我们先从客户端开始,它可以让你连接到服务器。如果你用的是现代 Linux 发行版,SSH 客户端很可能已经安装好了。我们先来检查下:
ssh -V
你应该能看到关于 SSH 客户端版本的信息。如果命令显示“未找到”,那就需要安装它(在 Ubuntu 和其他基于 Debian 的发行版上):
sudo apt update
sudo apt install openssh-client
在 MacOS 上,SSH 客户端是预装的,而如果你使用的是 WSL,安装方法和 Linux 类似。
3. 通过 SSH 连接到远程服务器
连接到服务器的命令是:
ssh username@hostname
username
— 是远程服务器上的用户名。hostname
— 是服务器的 IP 地址或者域名。
连接示例:
ssh student@192.168.1.10
如果一切设置正常,系统会要求输入密码。输入密码后,你会进入服务器的远程控制台。恭喜你,你已经半只脚踏入了“电影中黑客超级坏蛋操作员”的职业生涯。
4. 安装与配置 SSH 服务器
安装 SSH 服务器
如果你在服务器或需要连接的本地机器上工作,需要安装 SSH 服务器。在 Ubuntu 上,可以这样操作:
sudo apt update
sudo apt install openssh-server
检查 SSH 服务的状态:
sudo systemctl status ssh
你应该会看到类似 active (running)
的消息。如果服务器没有启动,使用以下命令:
sudo systemctl start ssh
sudo systemctl enable ssh
现在 SSH 服务器已经可以接受连接了。
配置 SSH 服务器
SSH 服务器的主要配置文件是 /etc/ssh/sshd_config
。可使用任何文本编辑器(例如 nano
)来编辑:
sudo nano /etc/ssh/sshd_config
注意以下参数:
Port 22
— SSH 使用的端口。PermitRootLogin no
— 禁止 root 登录(建议出于安全考虑保留no
)。PasswordAuthentication yes
— 允许密码登录。
修改参数后,重启 SSH 服务器:
sudo systemctl restart ssh
5. 使用密钥认证
使用密码连接很方便,但并不安全。最好的选择是使用SSH密钥。
生成SSH密钥
在客户端机器上运行以下命令:
ssh-keygen
脚本会询问密钥保存路径(默认是~/.ssh/id_rsa
)。可以按Enter键接受默认路径。然后会询问密钥短语。为了简化操作,建议留空(但这样不太安全)。
命令执行后会生成以下密钥文件:
id_rsa
— 私有密钥(不要公开它,就像你项目的源码在发布前不要公开,特别是如果代码质量不佳)。id_rsa.pub
— 公有密钥(这个可以用来连接)。
将密钥传输到服务器
使用ssh-copy-id
命令将公有密钥传输到服务器:
ssh-copy-id username@hostname
这会将你的公有密钥添加到服务器的~/.ssh/authorized_keys
文件中。现在你可以无需输入密码直接连接。
试试:
ssh username@hostname
如果一切顺利,不会询问密码。你的生活现在正式变得更简单了一些。
SSH和WSL
如果你通过WSL在Windows上工作,这里也可以使用SSH。打开WSL终端并安装SSH客户端:
sudo apt update
sudo apt install openssh-client
后续操作与Linux相同。
6. 实践部分:在localhost上配置SSH
为了练习,你可以在同一网络中的两台机器之间配置SSH连接,甚至可以在自己的电脑上设置(使用localhost
作为地址)。
- 在同一台机器上安装SSH服务器和客户端。
- 通过本地地址连接:
ssh your_user@localhost
- 按照上面介绍的步骤,配置密钥连接。
最后,你应该能够实现无需密码的连接。
7. 配置和使用SSH别名
如果你经常连接到不同的服务器,可以通过在文件~/.ssh/config
中添加SSH配置来简化操作:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
现在你可以简单地通过以下命令连接:
ssh myserver
常见错误及其解决方法
错误 "Connection refused"。这意味着SSH服务器没有在远程设备上启动。确保它已安装并启动。
错误 "Permission denied"。可能是你输入了错误的密码,或者密钥配置有问题。检查服务器上的文件
~/.ssh/authorized_keys
内容。错误 "No route to host"。检查服务器是否网络可达(使用
ping
命令)。
现在你已经掌握了如何配置SSH、使用密钥和避免常见问题的知识。这是一个非常强大的工具,可以广泛用于工作中配置服务器,也可以用于管理家用的Raspberry Pi。
GO TO FULL VERSION