使用安全 Shell (ssh) 的 Linux 命令
介绍
我们可以通过多种方式通过 CLI 在两个系统 [Linux 到 Linux、Windows 到 Linux] 之间访问或通信。 Secure Shell (ssh) 是访问任何其他 Linux 系统的非常有用的工具。如果两个Linux系统通过任何网络连接,那么我们可以使用ssh访问其他系统。使用此设施有一些基本先决条件
ssh 客户端软件示例:Linux 中默认的 ssh 二进制文件、putty、mobaxterm 等。
ssh 服务器运行在远程 Linux 系统中。
远程系统的 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 rian@192.168.1.102
系统将提示用户“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.
rian@192.168.1.102'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 rian@192.168.1.102 /bin/ls
输出
rian@192.168.1.102's password:
Desktop
Documents
Downloads
examples.desktop
Music
Pictures
Public
Templates
tutorialpoint
Videos
访问远程系统中基于 GUI 的应用程序
如果我们需要从远程系统打开任何基于 GUI 的应用程序(例如 Firefox),那么我们必须使用 –X 选项进行 ssh。
$ ssh –X rian@192.168.1.102
现在,我们可以在 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 rian@192.168.1.102:/tmp/
输出
rian@192.168.1.102'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不可达。我们应该 ping 远程 IP,然后尝试 ssh。
结论
通过这篇文章,我们了解了ssh命令的很多用法。使用 ssh,我们可以更快地访问另一个 Linux 系统,并执行一些操作,如复制、执行命令等。