SSH原理与运用(二):远程操作与端口转发
作者:阮一峰
(Image credit: Tony Narlock)
七、远程操作
SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作。
上一节的操作,就是一个例子:
$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
单引号中间的部分,表示在远程主机上执行的操作;后面的输入重定向,表示数据通过SSH传向远程主机。
这就是说,SSH可以在用户和远程主机之间,建立命令和数据的传输通道,因此很多事情都可以通过SSH来完成。
下面看几个例子。
【例1】
将$HOME/src/目录下面的所有文件,复制到远程主机的$HOME/src/目录。
$ cd && tar czv src | ssh user@host 'tar xz'
【例2】
将远程主机$HOME/src/目录下面的所有文件,复制到用户的当前目录。
$ ssh user@host 'tar cz src' | tar xzv
【例3】
查看远程主机是否运行进程httpd。
$ ssh user@host 'ps ax | grep [h]ttpd'
八、绑定本地端口
既然SSH可以传送数据,那么我们可以让那些不加密的网络连接,全部改走SSH连接,从而提高安全性。
假定我们要让8080端口的数据,都通过SSH传向远程主机,命令就这样写:
$ ssh -D 8080 user@host
SSH会建立一个socket,去监听本地的8080端口。一旦有数据传向那个端口,就自动把它转移到SSH连接上面,发往远程主机。可以想象,如果8080端口原来是一个不加密端口,现在将变成一个加密端口。
九、本地端口转发
有时,绑定本地端口还不够,还必须指定数据传送的目标主机,从而形成点对点的"端口转发"。为了区别后文的"远程端口转发",我们把这种情况称为"本地端口转发"(Local forwarding)。
假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连通前面两台主机。因此,很自然的想法就是,通过host3,将host1连上host2。
我们在host1执行下面的命令:
$ ssh -L 2121:host2:21 host3
命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口 2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)。
这样一来,我们只要连接host1的2121端口,就等于连上了host2的21端口。
$ ftp localhost:2121
"本地端口转发"使得host1和host3之间仿佛形成一个数据传输的秘密隧道,因此又被称为"SSH隧道"。
十、远程端口转发
既然"本地端口转发"是指绑定本地端口的转发,那么"远程端口转发"(remote forwarding)当然是指绑定远程端口的转发。
还是接着看上面那个例子,host1与host2之间无法连通,必须借助host3转发。但是,特殊情况出现了,host3是一台内网机器,它可以 连接外网的host1,但是反过来就不行,外网的host1连不上内网的host3。这时,"本地端口转发"就不能用了,怎么办?
解决办法是,既然host3可以连host1,那么就从host3上建立与host1的SSH连接,然后在host1上使用这条连接就可以了。
我们在host3执行下面的命令:
$ ssh -R 2121:host2:21 host1
R参数也是接受三个值,分别是"远程主机端口:目标主机:目标主机端口"。这条命令的意思,就是让host1监听它自己的2121端口,然后将所有 数据经由host3,转发到host2的21端口。由于对于host3来说,host1是远程主机,所以这种情况就被称为"远程端口绑定"。
绑定之后,我们在host1就可以连接host2了:
$ ftp localhost:2121
这里必须指出,"远程端口转发"的前提条件是,host1和host3两台主机都有sshD和ssh客户端。
十一、SSH的其他参数
SSH还有一些别的参数,也值得介绍。
N参数,表示只连接远程主机,不打开远程shell;T参数,表示不为这个连接分配TTY。这个两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作。
$ ssh -NT -D 8080 host
f参数,表示SSH连接成功后,转入后台运行。这样一来,你就可以在不中断SSH连接的情况下,在本地shell中执行其他操作。
$ ssh -f -D 8080 host
要关闭这个后台连接,就只有用kill命令去杀掉进程。
相关推荐
3. 动态端口转发:ssh -C -f -N -g -D listen_port 用户名@Tunnel_Host SSH 端口映射的优点: * 实现远程服务器的端口访问 * 提高网络安全性 * 简化网络配置 SSH 端口映射的工作原理: 1. 本地机器上分配了一个 ...
- **远程端口转发(Remote Port Forwarding)**:远程服务器的数据转发到本地机器,然后由本地机器发送到目标地址。 - **动态端口转发(Dynamic Port Forwarding)**:本地机器创建一个SOCKET,所有通过这个SOCKET...
- **隧道创建**:SSH 可以创建安全的网络隧道,用于转发本地端口到远程服务器,提供对内部网络资源的访问。 Spring 框架是一个与 SSH 无关的 Java 开源框架,主要应用于企业级应用开发。Spring 的核心特性包括: -...
- **端口转发**:可以将本地端口的数据通过SSH隧道转发到远程服务器,或者将远程服务器的端口转发到本地,实现网络服务的间接访问。 - **X11转发**:在SSH连接中启用X11转发,可以在本地显示远程Linux系统的图形界面...
SSH 的应用场景非常广泛,包括远程登录、文件传输、端口转发等。SSH 是 Linux 系统的标准配置,已经成为互联网安全的一个基本解决方案。 SSH 是一种功能强大且安全的网络协议,能够保护用户的登录信息和数据安全。...
- **端口转发**:通过SSH可以设置端口转发,例如本地端口到远程端口的转发:`ssh -L 本地端口号:远程主机地址:远程端口号 用户名@远程主机地址`,这样就可以安全地访问远程主机上的服务。 除了`ssh`命令行工具外,...
【fpipe端口转发工具】是一种实用的网络工具,它允许用户通过本地不受限制的端口来访问那些受到远程访问限制的端口。在描述中提到的命令`fpipe -l 53 -s 53 -r 80 192.168.1.101`是一个具体的使用示例,解释了如何...
- 动态端口转发:可以创建一个SOCKS代理,让所有流量通过SSH加密通道。 6. **SSH性能优化**: - 加速SSH连接:启用TCP快启动、压缩数据传输、减少最大等待时间等。 - 使用公钥认证并缓存:避免每次连接都进行...
5. **SSH隧道**:理解SSH隧道的概念,学习如何创建本地和远程端口转发,以安全地访问受限制的服务或绕过防火墙。 6. **SSH配置文件**:分析`~/.ssh/config`文件,学习如何自定义SSH连接参数,如主机别名、连接超时...
在Windows操作系统中,实现端口转发通常涉及到利用特定的软件工具,如SSH客户端(如PuTTY)或者一些专门设计的端口转发工具。在给定的“windows 端口转发.zip”压缩包中,包含了可能用于端口转发的一系列文件,例如...
SSH还可以创建端口转发隧道,实现本地端口与远程服务器端口之间的通信。例如,将本地的8080端口转发到远程服务器的80端口: ``` ssh -L 8080:localhost:80 用户名@远程主机地址 ``` 7. 使用SFTP/SCP进行文件传输 ...
端口转发工具是一种网络应用程序,它允许用户将网络流量从一个端口重定向到另一个不同的端口,甚至可以在不同计算机之间进行。这个过程通常被称为端口映射或端口隧道,是网络通信中的一个重要概念,尤其在处理远程...
- X11转发:允许用户在本地计算机上显示运行在远程服务器上的图形应用程序,借助X Window System。 - 代理跳转:SSH支持通过一个中间服务器转发连接,以便访问被防火墙阻隔的服务器,提高了网络访问的灵活性。 5....
5. **SSH隧道和端口转发**:理解SSH隧道的概念,学会使用本地和远程端口转发来安全地访问远程服务,例如,通过SSH隧道访问只允许内部网络访问的数据库。 6. **SSH代理和密钥转发**:了解SSH代理(如`ssh-agent`)...
4. 端口转发:SSH可以创建隧道,将本地端口上的流量转发到远程服务器,这样可以保护敏感的应用程序免受网络攻击。 SSH的配置涉及到多个方面: 1. 配置文件:主要的配置文件是`~/.ssh/config`,在这里可以设置主机...
端口转发则可以将本地的某个端口流量转发到远程服务器,实现数据的安全传输,常用于绕过防火墙限制。 在这个绿色版SSH客户端中,可能包含了以下组件: 1. SSH客户端程序:用于与远程服务器建立安全连接。 2. 公钥/...
- `~/.ssh/config`文件:这个是用户的SSH客户端配置,可以设置主机别名(`Host`),连接的主机地址(`HostName`),使用的用户名(`User`),默认私钥文件(`IdentityFile`),以及端口转发(`ForwardAgent`或`...
4. **端口转发**:SSH支持端口转发,可以将本地端口的流量转发到远程服务器,或者将远程服务器的端口转发到本地。这对于绕过防火墙限制,或者创建安全的隧道(如HTTPS到HTTP)非常有用。 5. **X11转发**:SSH还可以...
理解SSH隧道的概念,如何创建本地和远程端口转发。 5. **SSH安全实践**:学习最佳实践,如定期更换密钥、限制失败的登录尝试、使用非默认端口等,以提高SSH服务的安全性。 6. **SSH代理与配置管理**:了解如何使用...
首先,SSH整合通常指的是将SSH与应用程序服务器如Spring、Struts或Hibernate等Java EE框架相结合,以便通过SSH协议进行远程管理和操作。例如,在Spring框架中,SSH整合允许开发者安全地执行远程命令、管理服务器或...