在 Linux 中使用 SSH 的初学者指南

SSH (Secure Shell) 是 Linux 中安全远程系统管理的重要工具。本指南介绍了 SSH 的基础知识,包括设置 SSH 服务器、连接到远程系统和安全传输文件,为远程 Linux 管理的初学者提供了坚实的基础。

getting-started-with-SSH

W来到 Linux 中的 SSH 或 Secure Shell 世界!无论您是崭露头角的系统管理员、开发人员,还是只是技术爱好者,掌握 SSH 就像获得了新的超能力。在这篇博客中,我将向你介绍 SSH 的基础知识,包括如何设置它以及你可以用它做的一些很酷的事情。作为一个花费大量时间修补 Linux 服务器的人,我已经逐渐喜欢上了 SSH 的简单性和强大功能。让我们开始吧!

什么是 SSH?

SSH 代表 Secure Shell。它是一种网络协议,允许从一台计算机安全地远程登录到另一台计算机。系统管理员广泛使用它来控制 Web 服务器,开发人员处理代码,甚至业余爱好者使用它来管理他们的个人项目。SSH 的美妙之处在于它的安全性;它会加密您的会话,使连接免受窃听。

在 Linux 中设置 SSH

安装 SSH

首先,让我们安装 SSH。大多数 Linux 发行版默认安装了 SSH 客户端,但您可能需要安装 SSH 服务器。

对于 Debian/Ubuntu:

sudo apt update
sudo apt install openssh-server

对于 Fedora:

sudo dnf install openssh-server

对于 Arch Linux:

sudo pacman -S openssh

启动和启用 SSH 服务

安装后,您需要启动 SSH 服务并使其在启动时启动。

sudo systemctl start sshd
sudo systemctl enable sshd

检查 SSH 服务状态

为确保一切顺利运行,请检查 SSH 服务状态。

sudo systemctl status sshd

您应该会看到指示服务处于活动状态且正在运行的输出。

连接到远程计算机

要连接到远程计算机,您需要其 IP 地址或主机名以及您正在访问的用户帐户。

ssh username@hostname

例如:

ssh john@192.168.1.10

首次连接时,系统会要求您验证主机的身份。这是 SSH 安全措施的一部分。

SSH 密钥,用于安全、无密码的登录

使用 SSH 密钥是比使用密码更安全的替代方法。它使用一对加密密钥向 SSH 服务器进行身份验证,作为基于密码的登录的替代方案。

生成 SSH 密钥

使用以下方法生成 SSH 密钥对:

ssh-keygen

系统将提示您输入用于保存密钥的文件和可选的密码,以提高安全性。

将公钥复制到远程服务器

生成密钥后,使用以下命令将公钥复制到远程服务器:

ssh-copy-id username@hostname

现在您无需密码即可登录远程服务器!

自定义 SSH

配置 SSH

您可以在文件中自定义 SSH 设置。在编辑之前,请务必备份此文件!/etc/ssh/sshd_config

示例:更改默认 SSH 端口

要更改默认端口 (22),请编辑文件:

sudo nano /etc/ssh/sshd_config

找到带有 的行,删除 ,然后更改为所需的端口号。#Port 22#22

更改后重新启动 SSH 服务

不要忘记重新启动 SSH 服务以应用更改:

sudo systemctl restart sshd

提示和技巧

使用 SSH 别名

如果您定期连接到同一服务器,则可以在文件中创建别名。~/.ssh/config

Host myserver
    HostName 192.168.1.10
    User john
    Port 2222

现在,只需使用即可连接!ssh myserver

通过 SSH 传输文件

SCP(安全复制协议)用于通过 SSH 进行安全文件传输。

要将文件从本地计算机复制到远程服务器:

scp file.txt username@hostname:/path/to/destination

远程命令执行

在不登录的情况下在远程机器上运行命令:

ssh username@hostname 'command'

例如:

ssh john@192.168.1.10 'ls -l /home/john'

SSH 的实际应用

现在我们已经介绍了 SSH 的基础知识,让我们深入研究一些实际的示例,这些示例展示了如何在日常场景中使用 SSH。我将在 Ubuntu 终端上演示这些示例,这是我的首选发行版,因为它的用户友好性。请记住,输出可能会因您的系统配置和远程服务器的设置而略有不同。

1. 基本远程登录

输入:

ssh alice@192.168.1.15

输出示例:

alice@192.168.1.15's password: 
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-42-generic x86_64)
* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage
Last login: Tue Jan 10 10:15:17 2024 from 192.168.1.12
alice@remote-server:~$ 

2. 执行远程命令

输入:

ssh bob@192.168.1.15 'df -h'

输出示例:

bob@192.168.1.15's password: 
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           395M  5.6M  389M   2% /run
/dev/sda1       30G   12G   17G  42% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock

3. 将文件传输到远程服务器

输入:

scp report.txt carol@192.168.1.15:/home/carol/documents

输出示例:

carol@192.168.1.15's password: 
report.txt                                    100% 1050   1.1KB/s   00:00    

4. 端口转发

输入:

ssh -L 8080:localhost:80 david@192.168.1.15

输出示例:

david@192.168.1.15's password: 
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-42-generic x86_64)
...

注意:此命令将本地端口 8080 转发到远程服务器上的端口 80。现在,在本地计算机上访问 http://localhost:8080 将显示远程服务器的端口 80 上提供的内容。

5. 实时监控系统日志

输入:

ssh eve@192.168.1.15 'tail -f /var/log/syslog'

输出示例:

eve@192.168.1.15's password: 
Jan 11 10:20:01 remote-server CRON[18360]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jan 11 10:30:01 remote-server CRON[18361]: (root) CMD (   command to run scheduled tasks)
...

注意:此命令将跟踪系统日志文件,以便您实时监控它以进行故障排除。

这些示例中的每一个都展示了 SSH 在管理远程 Linux 系统方面的多功能性。无论是用于基本文件传输、系统监控还是端口转发等高级配置,SSH 仍然是任何管理 Linux 系统的人的重要工具。

快速参考 SSH 命令列表

以下是一些常见 SSH 命令及其描述的快速参考表,供经常在 Linux 中使用 SSH 的用户使用。

SSH 命令 描述
ssh user@host 连接到 as 。hostuser
ssh -p port user@host 连接到 on 作为 。hostportuser
ssh-keygen 生成新的 SSH 密钥对。
ssh-copy-id user@host 将您的密钥复制到 以供用户启用无密码登录。host
ssh -L localPort:remoteHost:remotePort localUser@localHost 设置本地端口转发。
ssh -R remotePort:localHost:localPort remoteUser@remoteHost 设置远程端口转发。
scp file.txt user@host:/path 安全地拷贝到远程 。file.txt/path
scp user@host:/path/file.txt . 将文件从远程系统安全地复制到本地系统。
ssh user@host 'command' 在远程主机上运行,无需登录。command
ssh -i /path/to/private-key user@host 使用特定私钥进行连接。

有关 Linux 中 SSH 的常见问题

SSH 是做什么用的?

SSH (Secure Shell) 主要用于安全远程登录和管理服务器、文件传输以及在远程计算机上运行命令。它是网络管理、开发和系统维护的重要工具。

SSH 安全吗?

是的,SSH 旨在确保安全。它使用加密来保护数据传输,防止未经授权的访问和窃听。但是,它的安全性取决于正确的配置和管理,例如使用强密码或 SSH 密钥,并使软件保持最新状态。

我可以使用 SSH 传输文件吗?

绝对!SSH 提供了一个名为 (Secure Copy Protocol) 的命令,用于在主机之间安全地传输文件。此外,还有 (SSH File Transfer Protocol),它提供类似于 FTP 的文件传输接口。scpsftp

如何排查 SSH 连接失败问题?

首先,检查 SSH 服务是否在远程主机上运行。然后,确保您使用的是正确的 IP 地址、用户名和身份验证方法(密码或 SSH 密钥)。此外,检查网络问题,例如防火墙阻止 SSH 端口(默认为 22)。最后,查看 SSH 日志文件(在 Ubuntu 上)以获取特定的错误消息。/var/log/auth.log

我可以更改默认的 SSH 端口吗?

是的,您可以更改默认的 SSH 端口 (22) 以增强安全性。在服务器上编辑文件,将行更改为所需的端口,然后重新启动 SSH 服务。请记住更新防火墙规则以允许新端口。/etc/ssh/sshd_configPort

如何管理多个 SSH 密钥?

您可以通过创建配置文件 () 来管理多个 SSH 密钥,您可以在其中指定要用于每个主机的密钥。这样就无需在每次连接时指定密钥。~/.ssh/config

使用 SSH 密钥或密码更好吗?

SSH 密钥通常被认为比密码更安全。它们几乎不可能被暴力破解,也不容易受到键盘记录等常见攻击。但是,它们必须保持安全,尤其是私钥。

我可以通过 SSH 运行图形应用程序吗?

是的,通过将 SSH 与 X11 转发(通过 SSH 客户端中的选项启用)结合使用,您可以在远程服务器上运行图形应用程序,并在本地计算机上显示它们。-X

复制 SSH 密钥 和 有什么区别?ssh-copy-idscp

ssh-copy-id是专门设计用于将公钥安装在远程计算机的 . 是一个更通用的文件复制实用程序,可用于手动复制密钥文件,但它需要更多步骤和有关目标目录结构的知识。~/.ssh/authorized_keysscp

如何保持我的 SSH 连接处于活动状态?

要防止 SSH 会话超时,您可以在客户端编辑文件并添加选项,该选项每指定秒数向服务器发送一个空数据包,以保持连接处于活动状态。~/.ssh/configServerAliveInterval

结论

SSH 是一个非常强大的工具,对于任何使用 Linux 的人来说都是必须知道的。虽然乍一看可能令人生畏,但一旦你掌握了它的窍门,你就会发现这是一种简单而安全的方式来管理远程系统。我希望本指南已经为您揭开了 SSH 的神秘面纱,并激发了您探索更多功能的兴趣。

请注意,虽然我在这里介绍了基础知识,但关于 SSH 和 Linux 还有更多内容需要学习。继续探索和实验!

原创文章,作者:主机说,如若转载,请注明出处:https://www.hostingtalk.cn/a-beginners-guide-to-using-ssh-in-linux/

error: 内容保护