ssh 代理设置

45baike 2024-03-28 22次阅读

-N告诉SSH客户端,这个连接不需要执行任何命令,也就是说不需要打开远程,仅仅做端口转发;

-T不为这个连接分配TTY。其中-N,-T两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作;

-f告诉SSH客户端在后台运行,要关闭这个后台连接,就只有用kill命令去杀掉进程;

-L做本地映射端口,需要注意被冒号分割的三个部分含义,下面做详细介绍;

-C压缩数据传输;

-g()默认只转发本地发送的数据,如果要转发其它服务器的客户端请求,则需要添加该参数。

注意,使用时需要修改服务端的如下配置。

接下来,看看具体的使用场景,以及配置方式。

本地转发

其中,通过本地转发时,命令参数如下。

-----本地转发方式的参数设置$ssh-N-f-L[]:[]:[][user@]

其中-参数的含义是:将IP为Y的机器的Z端口通过中间服务器(部署了sshd的服务器)映射到本地机器的X端口。

需要注意的是,此是只有ssh客户端与服务器之间的数据是加密的,而实际上中间服务器到Y服务器的数据没有加密。

转发到本地服务

为了防止被攻击,通常在进行防火墙配置时,会尽可能减小打开的端口,例如只开启服务端口,因此如果需要访问mysql(3306)服务只能从本地访问,此时可以使用该功能。

可以执行如下命令,然后访问本地的端口7000即可。

-----本地执行如下命令,然后访问localhost:7000即可$ssh-N-f-L7000:localhost:3306mysql_server_ip-----访问远程的MySQL服务$mysql-P7000-hlocalhost

注意,非管理员只能使用1024~65535的端口,在此选择7000端口。

数据在传输时将会通过如下的四步:A)将数据发送到本地的7000端口;B)本地的SSHClient将7000收到的数据加密后发送到mysql_server_ip;C)SSHD端收到数据后解密,并发送给本地的3306端口;D)从MySQLServer上返回的数据按照原路返回。

转发到其它服务器

另外一种场景如下,A尝试访问C提供的FTP服务,但是由于防火墙导致不能直接访问,也就是说ABC链路不通。但是ABD链路是通的,而且D上运行着ssh-server,此时就可以利用隧道技术建立ABDC链路。

也就是说,中间服务器D部署着sshd服务,用于建立ssh连接;C的21端口提供FTP服务,然后就可以通过如下方式建立隧道。

-----本地执行如下命令,然后访问localhost:2121即可$ssh-N-f-L2121:234.234.234.234:21123.123.123.123-----访问234.234.234.234服务器上的ftp服务$ftplocalhost:2121

远程转发

对于上述的第二个场景,A通常时一个内网,也就是说D-B-A是无法建立链接的,如上所述,而A-B-D是可以通过ssh建立链接的,为了可以建立D-B-A的连接,那么就需要远程转发了。

也就是说,我们利用一条已经连接好的A-B-D方向的连接来完成D-B-A方向的访问。

$ssh-R[localport]:[remotehost]:[remoteport][SSHhostname]-----在123.123.123.123上执行如下命令,建立22(ssh服务)的远程转发$ssh-N-f-R2222:127.0.0.1:22123.123.123.123-----反向登陆到D上$ssh-p2222localhost

此是的操作为让SSHhostname监听自己的localport端口;将所有的数据经由123.123.123.123服务器,转发到remotehost:remotepost服务器。

对于D来说,A是一台远程主机,所以这种情况就被称为“远程端口绑定”。

两者比较容易混淆,可以通过如下的方法区分。如果服务器(ssh和应用)都在同一端,则是本地转发;否则是远程转发。

另外,需要注意,”远程端口转发”的前提条件是,D和A两台主机都有sshd和ssh客户端。

另外示例

也可以理解为,A提供了一个服务,D想要访问这个服务,但是A没有公网IP,导致D无法直接访问。

此时就需要建立一个A-D的隧道,然后D通过这个隧道访问即可。

ASVR(ssh-CLI)172.16.0.163DCLI(ssh-SVR)192.168.9.15ssh-N-f-R3967:127.0.0.1:3967root@192.168.9.15

动态转发

也就是通过ssh在本地建立一个socks代理服务,所有的本地网络访问都会通过该端口,然后转发到服务器,而应用程序决定使用那个端口。

可以用作隧道代理,其大致的工作如下:

整个流程如下:

相关阅读

  • ssh隧道代理方法
  • windows下用ssh做代理的方法
  • ssh 通过代理连接服务器
  • 透过代理连接ssh Lainmes Blog
  • linux 中国◆开ssh代理源社区
  • ssh代理
  • linux 中国◆开ssh代理源社区
  • 透过代理连接ssh Lainmes Blog
  • ssh 代理设置
  • 分享到:QQ空间新浪微博腾讯微博人人网微信百度复制网址

    标签: ssh  代理  设置 


    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。