Contents

Linux中SSH命令简介

1. 概述

随着越来越多的敏感信息通过 Internet 传输,对服务器之间安全、加密连接的需求也在增加。

在本教程中,我们将了解ssh ,这是一种协议和一组工具,可在服务器之间提供安全、加密的通信。

请注意,我们使用 Bash 测试了此处显示的所有命令;但是,它们应该可以与任何符合 POSIX 标准的终端一起使用。

2. 配置

几乎所有基于 Unix 和 Linux 的操作系统(包括 macOS)都提供预配置的ssh程序。在 Windows 操作系统上,我们可以使用PuTTYgit-bash for Windows 来安装ssh

ssh 的好处是我们不需要做任何其他事情来加密流量。默认情况下,ssh 使用Diffie-Hellman 密钥交换 来协商和交换加密密钥,然后为我们选择一种加密算法。

所以,一旦我们的机器上有了ssh ,我们就可以简单地开始连接了。

3. 访问远程主机

**ssh 的一个常见用途是连接到远程服务器。**例如,执行以下命令会将我们连接到主机remote-server.com

ssh my-userid@remote-server.com

在远程主机上输入密码后,该远程主机会为我们提供一个终端,我们可以在其中执行命令,就像在本地主机上使用 shell 一样。

另外请注意,我们可以使用顶级域、IP 地址或主机别名来引用我们的远程系统。

4. 端口转发

ssh 的一个非常有用的功能是端口转发。这使我们能够连接到本地端口并将该连接传输到可从远程系统访问的其他系统。这可以是我们最初连接到的系统或该远程网络上的其他系统。

要访问连接系统上的端口,我们使用:

ssh -L 8888:localhost:8080 my-userid@remote-server.com

在此示例中,localhost:8080 是相对于远程系统remote-server.com的。要访问远程系统remote-server.com可用的不同系统上的端口,我们使用:

ssh -L 8888:another-remote-server.com:8080 my-userid@remote-server.com

在这里,我们到端口 8888 的本地连接通过我们的安全通道发送到another-remote-server.com系统的 8080 端口,该系统可用于其网络上的remote-server.com系统。

我们还可以做反向端口转发,允许远程系统在命令行使用*-R*访问本地网络上的端口和系统。

同样,我们可以在端口转发时引用具有顶级域、IP 地址或在remote-server.com上定义的主机别名的远程或本地系统。

5. 远程命令

如果我们不需要 shell 而只想执行单个命令,我们可以只提供远程系统上该命令的路径:

ssh my-userid@remote-server.com /usr/local/bin/some-command

这将在非交互式会话中在 remote-server.com上运行 /usr/local/bin/some-command ,在本地终端中显示任何 stderr 或 stdout 消息,并在命令完成执行时终止连接。

6. X11

基于 Unix 和 Linux 的系统上的许多程序都使用基于X 窗口系统的 GUI 。

如果在远程系统上启动以查看我们本地系统上的界面,我们使用 -X:

ssh -X my-userid@remote-server.com

7.复制文件

除了本地到远程的连接,我们还可以使用我们的加密通道来复制文件。

有一些程序可以为我们提供这种能力。

第一个是sftp ,它是ftp 命令的安全版本。要使用它,我们只需使用sftp命令连接,然后像ftp一样使用它:

sftp my-userid@remote-server.com

我们可以使用的另一个程序是scp,它提供从本地主机到远程服务器的安全复制:

scp ./my-local-file.txt my-userid@remote-server.com

我们还可以使用scp将文件从远程服务器复制到我们的本地主机:

scp my-userid@remote-server.com:my-remote-file.txt ./my-local-copy-of-my-remote-file.txt

最后,rsync 命令很像scpftp 可以将文件从我们的本地主机复制到我们的远程服务器:

rsync ./my-local-file.txt my-userid@remote-server.com:/

它还可以将文件从远程服务器复制到我们的本地主机:

rsync my-userid@remote-server.com:/my-remote-file.txt ./my-local-copy-of-my-remote-file.txt

通常,rsyncsftpscp更快。

在 ssh 之前,文件传输协议 (FTP) 是用于将文件从一个系统传输到另一个系统的标准协议。但是,我们应该避免使用 FTP,因为它以纯文本格式传输数据,非常不安全。