使用安全外壳 (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 系统,并执行一些操作,例如复制、执行命令等。