SSH远程登陆Linux主机怎么实现

47次阅读
没有评论

共计 4973 个字符,预计需要花费 13 分钟才能阅读完成。

这篇文章主要讲解了“SSH 远程登陆 Linux 主机怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“SSH 远程登陆 Linux 主机怎么实现”吧!

什么是 SSH?

SSH 是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995 年,芬兰学者 Tatu Ylonen 设计了 SSH 协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为 Linux 系统的标准配置。

SSH 登录原理

SSH 远程登陆 Linux 主机怎么实现

SSH 基本用法

语法:

ssh -p 22 user@host

参数:

 -p:指定端口号。

 user:登录的用户名。

 host:登录的主机。

默认的端口号为 22,当端口号为 22 的时候,可以省略,直接使用如下方式:

ssh user@host

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

ssh host

SSH 远程登录实例

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

SSH 远程登陆 Linux 主机怎么实现

SSH 远程登陆 Linux 主机怎么实现

现在,我需要操作的是通过 SSH 在 192.168.13.138 上面,登录到 192.168.13.135 上面。

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

netstat -ntlp |grep ssh

SSH 远程登陆 Linux 主机怎么实现

使用如下命令进行连接。

ssh -p 22 root@192.168.13.135

若在本机上是首次登录该远程主机,则会出现如下界面。

SSH 远程登陆 Linux 主机怎么实现

大致意思就是,无法确认 host 主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?输入 yes 即可。

SSH 远程登陆 Linux 主机怎么实现

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

SSH 远程登陆 Linux 主机怎么实现

要想退出,直接输入 exit 即可。

SSH 远程登陆 Linux 主机怎么实现

SSH 端口转发

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 本地网卡地址: 本地端口: 目标地址: 目标端口 用户 @目标地址。

现在我们利用本地转发来解决一个问题,比如我们有两台机器,如下:

centos A(192.168.13.139)

centos B(192.168.13.142)

SSH 远程登陆 Linux 主机怎么实现

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

SSH 远程登陆 Linux 主机怎么实现

此时,在 centos A(192.168.13.139)上面是可以连上 centos B(192.168.13.142)的 mysql,如下:

SSH 远程登陆 Linux 主机怎么实现

那么,现在我开始 centos B(192.168.13.142)限制不允许外部 ip 连接,仅仅让 127.0.0.1 连接,如下:

SSH 远程登陆 Linux 主机怎么实现

此时,centos A(192.168.13.139)上面怎么连接上 centos B(192.168.13.142)的 mysql 呢?

此时,我们还是使用上面的 mysql 连接方式,肯定会报错,如下:

SSH 远程登陆 Linux 主机怎么实现

当然在 centos B(192.168.13.142)mysql 还是可访问的。

SSH 远程登陆 Linux 主机怎么实现

这个时候,我们就可以使用本地端口转发了,将本地的某个端口,映射到 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 192.168.13.14

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

数据流向如图:

SSH 远程登陆 Linux 主机怎么实现

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

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

接着,centos B(192.168.13.142)将处理后的数据,原路返回给 centos A(192.168.13.139)。

如果是首次通过 ssh 连接 cetosB 该机器,则会提示确认公钥,并让你选择是否确定连接。

SSH 远程登陆 Linux 主机怎么实现

此时,我们在 centos A 上面连接 centos B 上面的 mysql,就可以这么写了。

bin/mysql -h227.0.0.1 -uroot -p

如下:

SSH 远程登陆 Linux 主机怎么实现

我们可以通过下面命令,在 centosA 查看 ssh 转发监听的进程。

SSH 远程登陆 Linux 主机怎么实现

3. 远程转发

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

ssh -R 远程网卡地址: 远程端口: 目标地址: 目标端口

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

centos A(192.168.13.139)

centos 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)连接,那么,我们就可以在 centos A(192.168.13.139)上面使用远程端口转发了,让 win7(10.18.78.135)与 centos B(192.168.13.142)进行通信。

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 机器上面执行如下代码:

ssh dequan@192.168.13.149  uname -a

案例 2、将机器 A(192.168.13.148)中 test 文件夹复制到 B 机器(192.168.13.149)。

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

tar -cz test | ssh dequan@192.168.13.149  tar -xz

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

案例 3、在机器 A(192.168.13.148)处查看 B 机器(192.168.13.149)是否监听了 1080 端口。

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

ssh dequan@192.168.13.149  netstat -tln |grep 1080

SSH 远程登陆 Linux 主机怎么实现

SSH 的本地转发

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

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

案例 1、在机器 B(192.168.13.149)上面访问机器 A(192.168.13.148)的服务。

现在,我们在 A 机器上面,启动了 Nginx 服务,如下:

SSH 远程登陆 Linux 主机怎么实现

我们希望 B 机器也能够这样使用 A 机器上面的服务。需要把 B 机器上面 80 端口请求,转发到 A 机器上面。目前在 B 机器这样执行,是报错的,如下:

SSH 远程登陆 Linux 主机怎么实现

需要在 B 机器上面,执行如下代码:

ssh -f -N -L 127.0.01:80:192.168.13.148:80 dequan@192.168.13.148

然后,在 B 机器上面,访问 A 机器的服务,就想访问自身的服务一样。

SSH 远程登陆 Linux 主机怎么实现

SSH 的远程转发

远程转发,即把发给远程机器的某个端口请求,转发到本地的机器上面。格式如下:

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

在上面的案例中,我们也可以通过远程转发来实现。即在 A 机器上面执行如下代码:

sudo ssh -f -N -R 8081:127.0.0.1:80 dequan@192.168.13.149

我们监听了 B 机器的 8081 端口,把该端口的请求,转发到 A 机器上面。

可以在 B 机器上面看到,我们的监听,如下:

SSH 远程登陆 Linux 主机怎么实现

此时,执行如下命令,就会被转发到 A 机器的 127.0.0.1 的 80 端口,如下:

SSH 远程登陆 Linux 主机怎么实现

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.0:8081,修改 sshd 的配置 /etc/ssh/sshd_config。

vim /etc/ssh/sshd_config #如果有  GatewayPorts no #改为  GatewayPorts yes #没有,添加即可  # 然后重启 sshd sudo service sshd restart

然后重新,设置动态转发,如下:

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

可以看到,此时 B 机器,已经监听了 0:0.0.0:8081

SSH 远程登陆 Linux 主机怎么实现

在 C 机器上面,我们通过 curl 模拟请求,利用 B 机器做代理,如下:

curl -x 192.168.13.149:8081 127.0.0.1

SSH 远程登陆 Linux 主机怎么实现

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

SSH 的动态转发

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

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

比如,把发到 B 机器上面的请求,都转发到 A 机器上面,让 A 机器去执行请求。

SSH 存在的问题

如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像 https 协议,SSH 协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的 wifi 区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么 SSH 的安全机制就荡然无存了。这种风险就是著名的 中间人攻击(Man-in-the-middle attack)。

感谢各位的阅读,以上就是“SSH 远程登陆 Linux 主机怎么实现”的内容了,经过本文的学习后,相信大家对 SSH 远程登陆 Linux 主机怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计4973字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)