也想出现在这里? 联系我们

使用ssh访问防火墙后的Linux服务器的方法

作者 : 小编 本文共3578个字,预计阅读时间需要9分钟 发布时间: 2022-11-2 共708人阅读
也想出现在这里? 联系我们

使用ssh工具访问Linux服务器的基本方法

第一步,开启工作站上防火墙的相应端口,SSH是22。

第二步,开启SSH服务。先查看ssh的状态。

复制代码

代码如下:

service sshd status

开启服务,

复制代码

代码如下:

service sshd start

当然也可以关闭了,

复制代码

代码如下:

service sshd stop

重启服务,

复制代码

代码如下:

sshd restart

第三步,修改配置文件,/etc/ssh/sshd_config打开这个文件,在最后的地方AllowUsers,添加用户名,多个就用空格隔开,当然也可以添加root。如果想禁用root 登录也可以,这里不添加。同时可以在这个文件中找到一个语句: Permitrootlogin yes。将yes改为no就可以了。

第四步,设置ssh随机启动

复制代码

代码如下:

chkconfig –level xxxx sshd on //xxxx表示你要的等级(应该这么说吧),例如2345等

第五步,远程登录

复制代码

代码如下:

ssh usrname@hostname //hostname或者Ip

然后就是要你输入密码了。登录后,也可以更改用户(su 命令)。如何希望有图形,也不是不可以,在登录的时候加上 -X (大写的X):ssh -X usrname@hostname。这样勉强可以吧,也有图形界面了,就是反映比较慢,应急可以。

通过反向 SSH 隧道访问 NAT 后面的 Linux 服务器

什么是反向 SSH 隧道?SSH 端口转发的一种替代方案是 反向 SSH 隧道。反向 SSH 隧道的概念非常简单。使用这种方案,在你的受限的家庭网络之外你需要另一台主机(所谓的“中继主机”),你能从当前所在地通过 SSH 登录到它。你可以用有公网 IP 地址的 VPS 实例 配置一个中继主机。然后要做的就是从你的家庭网络服务器中建立一个到公网中继主机的永久 SSH 隧道。有了这个隧道,你就可以从中继主机中连接“回”家庭服务器(这就是为什么称之为 “反向” 隧道)。不管你在哪里、你的家庭网络中的 NAT 或 防火墙限制多么严格,只要你可以访问中继主机,你就可以连接到家庭服务器。在 Linux 上设置反向 SSH 隧道让我们来看看怎样创建和使用反向 SSH 隧道。我们做如下假设:我们会设置一个从家庭服务器(homeserver)到中继服务器(relayserver)的反向 SSH 隧道,然后我们可以通过中继服务器从客户端计算机(clientcomputer) SSH 登录到家庭服务器。本例中的中继服务器 的公网 IP 地址是 1.1.1.1。

在家庭服务器上,按照以下方式打开一个到中继服务器的 SSH 连接。

复制代码

代码如下:

homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1

这里端口 10022 是任何你可以使用的端口数字。只需要确保中继服务器上不会有其它程序使用这个端口。

“-R 10022:localhost:22” 选项定义了一个反向隧道。它转发中继服务器 10022 端口的流量到家庭服务器的 22 号端口。

用 “-fN” 选项,当你成功通过 SSH 服务器验证时 SSH 会进入后台运行。当你不想在远程 SSH 服务器执行任何命令,就像我们的例子中只想转发端口的时候非常有用。

运行上面的命令之后,你就会回到家庭主机的命令行提示框中。

登录到中继服务器,确认其 127.0.0.1:10022 绑定到了 sshd。如果是的话就表示已经正确设置了反向隧道。

复制代码

代码如下:

relayserver~$ sudo netstat -nap | grep 10022
复制代码

代码如下:

tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd

现在就可以从任何其它计算机(客户端计算机)登录到中继服务器,然后按照下面的方法访问家庭服务器。

复制代码

代码如下:

relayserver~$ ssh -p 10022 homeserver_user@localhost

需要注意的一点是你在上面为localhost输入的 SSH 登录/密码应该是家庭服务器的,而不是中继服务器的,因为你是通过隧道的本地端点登录到家庭服务器,因此不要错误输入中继服务器的登录/密码。成功登录后,你就在家庭服务器上了。

通过反向SSH 隧道直接连接到网络地址变换后的服务器上面的方法允许你访问 NAT 后面的 家庭服务器,但你需要登录两次:首先登录到 中继服务器,然后再登录到家庭服务器。这是因为中继服务器上 SSH 隧道的端点绑定到了回环地址(127.0.0.1)。

事实上,有一种方法可以只需要登录到中继服务器就能直接访问NAT之后的家庭服务器。要做到这点,你需要让中继服务器上的 sshd 不仅转发回环地址上的端口,还要转发外部主机的端口。这通过指定中继服务器上运行的 sshd 的 GatewayPorts 实现。

打开中继服务器的 /etc/ssh/sshd_conf 并添加下面的行。

复制代码

代码如下:

relayserver~$ vi /etc/ssh/sshd_confGatewayPorts clientspecified

重启 sshd。

基于 Debian 的系统:

复制代码

代码如下:

relayserver~$ sudo /etc/init.d/ssh restart

基于红帽的系统:

复制代码

代码如下:

relayserver~$ sudo systemctl restart sshd

现在在家庭服务器中按照下面方式初始化一个反向 SSH 隧道。

复制代码

代码如下:

homeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

登录到中继服务器然后用 netstat 命令确认成功建立的一个反向 SSH 隧道。

复制代码

代码如下:

relayserver~$ sudo netstat -nap | grep 10022
复制代码

代码如下:

tcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev

不像之前的情况,现在隧道的端点是 1.1.1.1:10022(中继服务器的公网 IP 地址),而不是 127.0.0.1:10022。这就意味着从外部主机可以访问隧道的另一端。

现在在任何其它计算机(客户端计算机),输入以下命令访问网络地址变换之后的家庭服务器。

复制代码

代码如下:

clientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1

在上面的命令中,1.1.1.1 是中继服务器的公共 IP 地址,homeserver_user必须是家庭服务器上的用户账户。这是因为你真正登录到的主机是家庭服务器,而不是中继服务器。后者只是中继你的 SSH 流量到家庭服务器。

在 Linux 上设置一个永久反向 SSH 隧道现在你已经明白了怎样创建一个反向 SSH 隧道,然后把隧道设置为 “永久”,这样隧道启动后就会一直运行(不管临时的网络拥塞、SSH 超时、中继主机重启,等等)。毕竟,如果隧道不是一直有效,你就不能可靠的登录到你的家庭服务器。

对于永久隧道,我打算使用一个叫 autossh 的工具。正如名字暗示的,这个程序可以让你的 SSH 会话无论因为什么原因中断都会自动重连。因此对于保持一个反向 SSH 隧道非常有用。

第一步,我们要设置从家庭服务器到中继服务器的无密码 SSH 登录。这样的话,autossh 可以不需要用户干预就能重启一个损坏的反向 SSH 隧道。

下一步,在建立隧道的家庭服务器上安装 autossh。

在家庭服务器上,用下面的参数运行 autossh 来创建一个连接到中继服务器的永久 SSH 隧道。

复制代码

代码如下:

homeserver~$ autossh -M 10900 -fN -o \”PubkeyAuthentication=yes\” -o \”StrictHostKeyChecking=false\” -o \”PasswordAuthentication=no\” -o \”ServerAliveInterval 60\” -o \”ServerAliveCountMax 3\” -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

“-M 10900” 选项指定中继服务器上的监视端口,用于交换监视 SSH 会话的测试数据。中继服务器上的其它程序不能使用这个端口。

“-fN” 选项传递给 ssh 命令,让 SSH 隧道在后台运行。

“-o XXXX” 选项让 ssh:

使用密钥验证,而不是密码验证。自动接受(未知)SSH 主机密钥。每 60 秒交换 keep-alive 消息。没有收到任何响应时最多发送 3 条 keep-alive 消息。其余 SSH 隧道相关的选项和之前介绍的一样。

如果你想系统启动时自动运行 SSH 隧道,你可以将上面的 autossh 命令添加到 /etc/rc.local。

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 使用ssh访问防火墙后的Linux服务器的方法

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录