在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
使用ssh工具访问Linux服务器的基本方法 第一步,开启工作站上防火墙的相应端口,SSH是22。 第二步,开启SSH服务。 复制代码 代码如下:service sshd status 开启服务, 复制代码 代码如下:service sshd start 当然也可以关闭了, 复制代码 代码如下:service sshd stop 重启服务, 复制代码 代码如下:sshd restart
第三步,修改配置文件,/etc/ssh/sshd_config 第四步,设置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 连接。 复制代码 代码如下:homeserver~$ ssh -fN -R 10022:localhost:22 [email protected] 这里端口 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之后的家庭服务器。要做到这点,你需要让中继服务器上的 sshd 不仅转发回环地址上的端口,还要转发外部主机的端口。这通过指定中继服务器上运行的 sshd 的 GatewayPorts 实现。 打开中继服务器的 /etc/ssh/sshd_conf 并添加下面的行。 复制代码 代码如下:relayserver~$ vi /etc/ssh/sshd_conf GatewayPorts 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 [email protected] 登录到中继服务器然后用 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 [email protected] 在上面的命令中,1.1.1.1 是中继服务器的公共 IP 地址,homeserver_user必须是家庭服务器上的用户账户。这是因为你真正登录到的主机是家庭服务器,而不是中继服务器。后者只是中继你的 SSH 流量到家庭服务器。 在 Linux 上设置一个永久反向 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 [email protected] “-M 10900” 选项指定中继服务器上的监视端口,用于交换监视 SSH 会话的测试数据。中继服务器上的其它程序不能使用这个端口。 “-fN” 选项传递给 ssh 命令,让 SSH 隧道在后台运行。 “-o XXXX” 选项让 ssh: 使用密钥验证,而不是密码验证。 如果你想系统启动时自动运行 SSH 隧道,你可以将上面的 autossh 命令添加到 /etc/rc.local。 |
请发表评论