CodeGym /课程 /Docker SELF /SSH入门:远程访问设置,使用密钥

SSH入门:远程访问设置,使用密钥

Docker SELF
第 4 级 , 课程 3
可用

SSH入门:远程访问设置,使用密钥

1. 什么是 SSH?

想象一下,你在地球的一端,而需要配置的服务器在另一端。学校 IT 专家的跑来跑去搞设备的工作方式可不是我们想要的。好在有 SSH (Secure SHell) —— 这是一个用来远程管理服务器的工具。

SSH 是一个网络协议,允许安全连接远程电脑。连接过程使用加密,这意味着传输的数据是被保护的,不会被别人偷看。SSH 取代了像 Telnet 这样的旧方法,它们传输数据是明文的(就像中国邮政明信片一样)。

SSH 的优点

  1. 安全性. SSH 使用加密技术,保护数据免被截获。
  2. 灵活性. 远程管理服务器、传输文件、创建隧道 —— 这些都可以通过 SSH 实现。
  3. 跨平台. 可以在 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作为地址)。

  1. 在同一台机器上安装SSH服务器和客户端。
  2. 通过本地地址连接:
ssh your_user@localhost
  1. 按照上面介绍的步骤,配置密钥连接。

最后,你应该能够实现无需密码的连接。


7. 配置和使用SSH别名

如果你经常连接到不同的服务器,可以通过在文件~/.ssh/config中添加SSH配置来简化操作:

Host myserver
    HostName 192.168.1.10
    User student
    IdentityFile ~/.ssh/id_rsa

现在你可以简单地通过以下命令连接:

ssh myserver

常见错误及其解决方法

  1. 错误 "Connection refused"。这意味着SSH服务器没有在远程设备上启动。确保它已安装并启动。

  2. 错误 "Permission denied"。可能是你输入了错误的密码,或者密钥配置有问题。检查服务器上的文件~/.ssh/authorized_keys内容。

  3. 错误 "No route to host"。检查服务器是否网络可达(使用ping命令)。


现在你已经掌握了如何配置SSH、使用密钥和避免常见问题的知识。这是一个非常强大的工具,可以广泛用于工作中配置服务器,也可以用于管理家用的Raspberry Pi。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION