ssh隧道

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。ssh隧道,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

#!/bin/sh

/usr/bin/expect << EOF
spawn ssh -C -f -N -g -L 40010:10.11.1.103:20005 qrcode@localhost

expect {
    "(yes/no)?" {
        send "yes\r"
        exp_continue
    }
    "password:" {
        send "qrcode\r"
    }
}

expect eof
EOF

这段代码是一个Bash脚本,用于通过SSH建立一个隧道(Tunnel)连接到远程服务器。该脚本中包含了一些Expect脚本,用于自动化处理SSH连接的过程,包括自动输入密码和处理连接确认等情况。

让我逐步解释脚本的功能:

1. `#!/bin/sh`: 这是一个shebang,指示脚本使用/bin/sh解释器执行。

2. `/usr/bin/expect << EOF`: 这是Bash脚本中的Here文档(Here Document)语法,用于将后续的文本作为输入传递给expect命令,直到遇到”EOF”(end of file)为止。

3. `spawn ssh -C -f -N -g -L 40010:10.11.1.103:20005 qrcode@localhost`: 在expect环境中,使用spawn命令启动一个SSH连接,并且通过隧道(Tunnel)将本地端口40010映射到远程服务器10.11.1.103的端口20005。连接的用户名是qrcode,连接的目标主机是localhost,即本地计算机。

4. `expect { … }`: 这是Expect脚本的开始。它设置一个匹配模式列表,以响应SSH连接期间可能遇到的不同情况。

    a. `”yes/no)?”`: 当SSH连接时,可能会遇到首次连接远程服务器的确认信息,即服务器的公钥指纹(fingerprint)没有保存在本地计算机上时,会收到一个(yes/no)的确认提示。在这种情况下,脚本会自动发送”yes”,以确认连接,并继续等待其他情况的匹配。

    b. `”password:”`: 如果连接需要密码,则会收到”password:”提示。在这种情况下,脚本会自动发送密码”qrcode”。

5. `expect eof`: 当SSH连接完成后,脚本会等待EOF(Here Document中的结束标记),表示所有Expect脚本都已执行完毕,然后退出。

综上所述,这段脚本主要目的是通过SSH建立到远程服务器的隧道,并自动处理连接时可能遇到的确认信息和密码输入。该脚本可以用于在本地计算机上设置一个SSH隧道,将本地端口映射到远程服务器的指定端口,以实现安全的网络连接。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/181586.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!