使用安全外壳 (ssh) 的 Linux 命令


简介

我们有很多方法可以通过 CLI 在两个系统之间进行访问或通信 [Linux 到 Linux,Windows 到 Linux]。安全外壳 (ssh) 是访问任何其他 Linux 系统的非常有用的工具。如果两个 Linux 系统通过任何网络连接,那么我们可以使用 ssh 访问其他系统。要使用此功能,需要满足一些基本先决条件。

  • ssh 客户端软件 示例:Linux 中的默认 ssh 二进制文件、putty、mobaxterm 等。

  • 远程 Linux 系统中运行的 ssh 服务器。

  • 远程系统的 IP 或主机名。

让我们讨论一下使用 ssh 进行 Linux 系统到 Linux 系统的通信。

配置 ssh 设置

根据先决条件,

如果客户端系统是 Windows,我们需要安装 putty 或 mobaxterm。对于 Linux 客户端系统,无需安装任何内容,因为默认情况下可以使用 ssh 命令。

我们可以运行以下命令来检查 ssh 是否已安装。

$ ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

然后在 Linux 服务器端,我们需要安装“openssh-server”软件包。我们可以使用以下命令进行安装。

$ sudo apt-get install openssh-server

让我们假设,

系统 A 是客户端,系统 B 是服务器。

系统 B 的 ip 为“192.168.1.102”,用户名为“rian”。我们将从系统 A 访问系统 B。

登录到远程 Linux 系统的命令

这是访问系统 B 的最小命令。

$ ssh <user name of system B>@<IP address or hostname of system B: 192.168.1.102>

实际命令是

$ ssh [email protected]

将提示用户“rian”输入密码。在输入正确的密码后,ssh 将成功连接到 ip 192.168.1.102 或系统 B。

输出

The authenticity of host '192.168.1.102 (192.168.1.102)' can't be established.
ECDSA key fingerprint is SHA256:YdQpl9u/N2+Dc6hPeDr8e5IdDXUJ3POj30prm1XJA2s.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.102' (ECDSA) to the list of known hosts.
[email protected]'s password:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.15.0-45-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

447 packages can be updated.
385 updates are security updates.

New release '18.04.6 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Thu Feb 11 22:20:03 2016 from 192.168.1.4

使用 ssh 在远程系统中执行命令

如果我们想在不登录远程系统的情况下运行任何远程命令,那么我们可以使用以下语法。

$ ssh <user name of system B>@<IP address of system B: 192.168.1.102> <command full path>

这是实际命令 [示例:ls]

$ ssh [email protected] /bin/ls

输出

[email protected]'s password:
Desktop
Documents
Downloads
examples.desktop
Music
Pictures
Public
Templates
tutorialpoint
Videos

在远程系统中访问基于 GUI 的应用程序

如果我们需要打开任何基于 GUI 的应用程序(例如远程系统的 firefox),则必须使用 –X 选项进行 ssh。

$ ssh –X [email protected]

现在,我们可以在 ssh 终端中从远程系统打开“firefox”浏览器。如果我们在没有 –X 的情况下使用 ssh,则无法打开基于 gui 的应用程序。

$ firefox

通过 ssh 连接复制

如果我们想使用“scp”命令通过 ssh 将任何文件从系统 A 复制到系统 B,我们可以使用以下语法。

$ scp system_a_file <user name of system B>@<system B ip address:system b path>

这是实际命令。

$ scp examples.desktop [email protected]:/tmp/

输出

[email protected]'s password:
examples.desktop                                                                                                                100% 8980     4.4KB/s   00:02

使用 ssh 进行端口转发

要访问端口,可以使用以下命令。这是一个非常有用的功能。

$ ssh -L 8888:localhost:8080 <user name of system B>@<ip or hostname of user B>

带有自定义端口的 ssh

默认情况下,ssh 监听端口号 22。但是,我们可以使用以下命令使用自定义 ssh 端口。

$ ssh <user@remote ip> -p 3423

重新启动 ssh 服务

如果 ssh 配置文件或其他原因发生更改,这是重新启动 sshd 服务的命令。

$ sudo sshd service restart

ssh 常用错误

有时在对远程系统执行 ssh 时,我们会遇到以下错误。

ssh: connect to host 192.168.1.107 port 22: No route to host

可能的原因是远程 ip 不可达。我们应该对远程 ip 进行 ping 测试,然后尝试 ssh。

结论

通过本文,我们了解了 ssh 命令的许多用法。使用 ssh,我们可以更快地访问另一个 Linux 系统,并执行一些操作,例如复制、执行命令等。

更新于: 2023-07-14

780 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告