陈奇网络工作室

SSH只能用来远程连接Linux主机?SSH的介绍和更多使用

本文的内容

显示

1.

什么是宋承宪?

2.

SSH登录原理

3.

SSH的基本用法

4.

SSH远程登录实例

5.

SSH端口转发

6.

SSH的远程操作

7.

SSH的本地转发

8.

SSH的远程转发

9.

SSH的动态转发

10.

SSH存在的问题

11.

SSH摘要

11.1.

推荐阅读

今天给大家分享一篇关于SSH的介绍和使用的文章。本文从什么是SSH入手,讲述SSH的基本用法,然后在远程登录、端口转发等多种场景下独立讲述,希望对大家有所帮助。实际操作请参考《优刻得GlobalSSH新版本支持修改端口加速非UCloud IP》。

什么是宋承宪?

什么是宋承宪?SSH是用于计算机之间加密登录的网络协议。最早的时候,互联网通信是纯文本通信。一旦被截获,内容无疑就暴露了。1995年,芬兰学者Tatuylon设计了SSH协议,对所有登录信息进行加密,成为互联网安全的基本解决方案,并迅速在全球推广。目前已经成为Linux系统的标准配置。

SSH登录原理

SSH的基本用法

语法:

ssh-p22用户@主机

参数:-p:指定端口号。用户:登录用户名。主机:登录的主机。默认端口号是22。当端口号为22时,可以省略,直接使用以下方法:

ssh用户@主机

另外,如果本地使用的用户名与远程登录的用户名一致,也可以省略登录用户名,即:

ssh主机

SSH远程登录实例

现在我有两台linux虚拟机,都安装了centOS6.5,ip分别为192.168.13.135和192.168.13.138,如下图:

现在,我需要做的是通过SSH登录到192.168.13.138。

首先,我们可以使用下面的命令来查看两台机器上是否都启用了ssh。

netstat -ntlp |grep ssh

使用以下命令进行连接。

ssh -p 22 root@192.168.13.135

如果是第一次登录本机的远程主机,会出现如下界面。

我无法确认主机的真实性,只知道它的公钥指纹。您想继续连接吗?只要输入是。

然后输入密码,就可以连接ok了。

如果想退出,直接回车退出即可。

SSH端口转发

SSH不仅可以自动对SSH客户端和服务器之间的网络数据进行加密和解密,还提供了一个非常有用的功能,那就是端口转发,即将TCP端口的网络数据转发到指定的主机端口,同时对数据进行加密和解密。如果工作环境中的防火墙限制了某些网络端口的使用,但允许SSH连接,那么也可以通过SSH转发的端口进行通信。转发主要分为本地转发和远程转发。

1.转发参数

-C:压缩数据

-f:后台身份验证用户/密码,通常与-N一起使用,无需登录远程主机。

-N:不执行脚本或命令,通常与-f一起使用。

-g:在-L/-R/-D参数中,允许远程主机连接到已建立的转发端口。如果不添加此参数,则只允许本地主机建立连接。

-L:本地端口:目标IP:目标端口

-D:动态端口转发

-R:远程端口转发

-T: TTY没有被分配,只是作为代理人使用。

-q:安静模式,不输出错误/警告信息。

2.本地转发

本地网络服务器有一个端口,转发到远程服务器的一个端口。说白了就是把发送到本地端口的请求转发到目标端口。格式如下:

Ssh -L本地网卡地址:本地端口:目的地址:目的端口user @目的地址。现在我们使用本地转发来解决一个问题,例如我们有两台机器,如下所示:

厘斯A(192.168.13.139)

百分位数B(192.168.13.142)

现在,mysql安装在centos B(192.168.13.142)机器上,并且设置了任何主机连接,如下所示:

此时,centos B(192.168.13.142)的mysql可以连接到centos A(192.168.13.139),如下所示:

所以,现在我启动centos B(192.168.13.142)限制外部ip连接,只让127.0.0.1连接,如下:

此时,如何将centos B(192.168.13.142)的mysql连接到centos A(192.168.13.139)?此时,我们仍然使用上面的mysql连接方法,我们肯定会报错,如下:

当然,在CentOS B (192.168.13.142)中仍然可以访问MySQL。

此时,我们可以使用SSH本地端口转发,并将一个本地端口映射到centos B(192.168.13.142)计算机,如下所示:

ssh-L 127 . 0 . 0 . 1:3306:127 . 0 . 0 . 1:3306 root @ 192 . 168 . 13 . 142

因为本地网卡地址可以省略,所以上面的转发可以缩写为:

ssh-L 3306:127 . 0 . 0 . 1:3306 root @ 192 . 168 . 13 . 142

当然,ssh连接时,如果两台机器的用户名相同,也可以省略,即命令可以缩写为:

ssh -L 3306:127.0.0.1:3306

上面的代码是将本地端口3306转发到192.168.13.142的端口3306。因为centos B(192.168.13.142)上的mysql使用的是3606端口。当然,首先要检查本地端口3306是否被占用。如果是,我们可以使用其他端口。

数据流向如图所示:

首先,centos A(192.168.13.139)上的应用程序将数据发送到本地127.0.0.1上的端口3306。

然后,centos A(192.168.13.139)通过SSH将3306端口的数据转发到centos B(192.168.13.142)的3306端口。

然后,centos B(192.168.13.142)将处理后的数据返回给centos A(192.168.13.139)。

如果是第一次通过ssh连接cetosB,会提示您确认公钥,让您选择是否确认连接。

此时,我们可以通过连接centos A和CentOS B上的mysql来编写这个。

bin/mysql -h127.0.0.1 -uroot -p

如下所示:

我们可以通过下面的命令在centosA中检查ssh转发监控的进度。

3.远程转发

它从远程服务器的端口被转发到本地网络的服务器的端口。说白了就是把发送到远程端口的请求转发到目标端口。格式如下:

Ssh -R远程NIC地址:远程端口:目标地址:目标端口

以下面三台机器为例,如下:

厘斯A(192.168.13.139)

百分位数B(192.168.13.142)

win7(10.18.78.135)

假设win7(10.18.78.135)和centos B(192.168.13.142)不能直连。但是win7(10.18.78.135)和centos A(192.168.13.139)可以连接到centos B(192.168.13.142)或者centos A(192.168.13.139),那么,

ssh-R 127 . 0 . 0 . 1:80:10 . 18 . 78 . 135:80 root @ 192 . 168 . 13 . 142

即centos B(192.168.13.142)监听自己的端口80,然后将centos A(192.168.13.139)的所有数据发送到win7(10.18.78.135)。

SSH的远程操作

Ssh远程操作主要用于在远程机器上执行操作,格式如下:

ssh user@host \'command\ '

案例1:在机器A(192.168.13.148)中检查机器B(192.168.13.149)的操作系统类型。

在机器A上执行以下代码:

宋承宪de quan @ 192 . 168 . 13 . 149 \ ' uname-a \ '

案例2:将测试文件夹从机器A(192.168.13.148)复制到机器B (192.168.13.149)。

在机器A上,执行以下命令:

tar -cz测试|宋承宪dequan@192.168.13.149 \'tar -xz\ '

当然,我们也可以使用scp命令或rz命令来传输文件。

情况3:在机器A(192.168.13.148)处检查机器B (192.168.13.149)是否正在监听端口1080。在机器A上,执行以下命令:

宋承宪de quan @ 192 . 168 . 13 . 149 \ ' netstat-tln | grep 1080 \ '

SSH的本地转发

本地转发,说白了就是把发送到本地端口的请求转发到远程机器。格式如下:

Ssh-L[本地地址:]本地端口:远程地址:远程端口远程用户@远程地址

案例1:在机器B(192.168.13.149)上访问机器A(192.168.13.148)的服务。现在,我们在机器A上启动了Nginx服务,如下所示:

我们希望机器B也能以这种方式使用机器A上的服务。需要将B机端口80的请求转发给a机,目前在B机执行这个是错误的,如下:

您需要在机器B上执行以下代码:

ssh-f-N-L 127 . 0 . 01:80:192 . 168 . 13 . 148:80德全@192.168.13.148

然后,在B机器上,访问A机器的服务就像访问自己的服务一样。

SSH的远程转发

远程转发是指将发送到远程机器的端口请求转发到本地机器。格式如下:

Ssh-R[远程地址:]远程端口:本地地址:本地端口远程用户@远程地址

以上情况,我们也可以通过远程转发来实现。也就是说,在机器A上执行以下代码:

须藤ssh -f -N -R 8081:127.0.0.1:80德全@192.168.13.149

我们监听机器B的端口8081,并将该端口的请求转发给机器A.您可以在机器B上看到我们的监控如下:

此时,执行以下命令,它将被转发到机器A的127.0.0.1的端口80,如下所示:

1、利用远程转发,实现代理功能。

目前B机只能在127.0.0.1上自己的80端口监听转发。机器B如何作为代理将来自其他机器的请求转发给机器A?比如有一个机器C(192.168.13.143)。C不能访问A,但是可以访问B,如何让C使用B访问A?此时,需要将B的监控从127.0.0.1:8081更改为0.0.0: 8081,并修改sshd /etc/ssh/sshd_config的配置。

vim /etc/ssh/sshd_config

如果有

网关端口编号

代替

登机口是的

不,只是添加它。

然后重启sshd。

sudo服务sshd重新启动

然后再次设置动态转发,如下所示:

ssh -f -g -N -R 8081:127.0.0.1:80德全@192.168.13.149

如你所见,此时B机一直在监听0:0.0.0:8081。

在C机器上,我们通过curl模拟请求,并使用B机器作为代理,如下所示:

卷曲-x 192.168.13.149:8081 127.0.0.1

当然,如果有其他机器,也可以用类似的方式请求机器a。

SSH的动态转发

对于SSH的本地转发和远程转发,本地端口和远程端口都需要一一绑定,格式如下:

ssh-D[本地地址:]本地端口号远程用户@远程地址

例如,将发送给机器B的所有请求转发给机器A,并让机器A执行这些请求。

SSH存在的问题

如果有人拦截登录请求,然后冒充远程主机,向用户发送伪造的公钥,用户很难辨别真伪。因为和https协议不同的是,SSH协议的公钥没有经过认证机构(CA)的公证,也就是都是自己签名的。可以想象,如果在用户和远程主机之间插入攻击者(比如在公共wifi区域),用伪造的公钥就可以获得用户的登录密码。然后用这个密码登录远程主机,SSH的安全机制就没了。这种风险就是著名的“中间人攻击”。

SSH摘要

本文主要介绍SSH的基本概念和实践中常用的一些方法,不涉及深层原理和优化的知识。底层实现和协议的具体内容可以进一步研究。如果有什么问题或者建议,可以在下面留言。

西部数码代理(chenqinet.cn)是工信部批准的正规老牌云服务商,拥有ISP、云牌照、IDC、CDN全业务资质。自成立以来,二十多年来一直专注于域名注册,虚拟主机云服务器,企业邮箱,企业网站建立等互联网基础服务!

公司开发的云计算平台以便捷、高效、高性价比、意想不到的售后优势占领市场,跻身国内前三的接入服务商,为国内超过50万家网站提供高速稳定的托管服务!先后荣获中国高新技术企业、中国优秀云计算服务商、中国十大IDC企业、中国最受欢迎云服务商等称号!

目前西部数码代理高性能云服务器在售,最低仅售48元!

http://zhuji.chenqinet.cn/cloudhost/

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3