如何正确设置 ssh 隧道

如何正确设置 ssh 隧道

假设,我家里的网络中有一台运行 Ubuntu 和 Glassfish 应用服务器的计算机。我正在使用 WiFi 调试我的 Web 应用程序。下一步是上传一些敏感数据。我担心 WiFi 的安全性。我不想让这个设置过于复杂,也不想失去 WiFi 的舒适感。所以,我决定将 Glassfish 的监听器绑定到 ::1,并使用 ssh 隧道将服务器的端口 8080 转发到我的笔记本电脑。

wget localhost:8080/工作正常,正在下载根 index.html

正如预期的那样,对我的服务器的 8080 端口的远程访问不起作用。

ssh -L 8080:homeserver:8080 minorthreat@homeserver - channel 2: open failed: connect failed: Connection refused

不起作用。我不知道为什么。

更新:

  • 我获得了到远程服务器的 ssh 连接,所以我认为凭证没问题。我看不出有什么理由把 -vvv 列出来,但无论如何我还是把它包括进来只是为了举个例子。

  • 我注意到 ssh 出于某种原因无法注册 known_hosts,但这是一个优先级较低的不同问题。我将在不久的将来使用基于证书的身份验证使其正常工作

  • 当 glassfish 的侦听器绑定到 0.0.0.0 时,此隧道有效。唉,这不行,我想禁止除来自 ssh 隧道(我的笔记本电脑连接)之外的任何服务器连接。

  • 问题是它没有转发连接 laptop[localhost interface]:8080->homeserver[::1 interface]:8080

    OpenSSH_5.4p1, OpenSSL 1.0.0 29 Mar 2010
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug2: ssh_connect: needpriv 0
    debug1: Connecting to homeserver [192.168.1.101] port 22.
    debug1: Connection established.
    Could not create directory '/home/mt/.ssh'.
    debug1: identity file /home/mt/.ssh/id_rsa type -1
    debug1: identity file /home/mt/.ssh/id_rsa-cert type -1
    debug1: identity file /home/mt/.ssh/id_dsa type -1
    debug1: identity file /home/mt/.ssh/id_dsa-cert type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
    debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.2 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_5.4
    debug2: fd 3 setting O_NONBLOCK
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received                                                                                                                                                                                                               
    /..... skip encryption details to fit char limits ........./
    debug2: kex_parse_kexinit: none,[email protected]
    debug2: kex_parse_kexinit: none,[email protected]
    debug2: kex_parse_kexinit:
    debug2: kex_parse_kexinit:
    debug2: kex_parse_kexinit: first_kex_follows 0
    debug2: kex_parse_kexinit: reserved 0
    debug2: mac_setup: found hmac-sha1
    debug1: kex: server->client aes128-ctr hmac-sha1 none
    debug2: mac_setup: found hmac-sha1
    debug1: kex: client->server aes128-ctr hmac-sha1 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<2048<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug2: dh_gen_key: priv key bits set: 181/320
    debug2: bits set: 1066/2048
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug3: check_host_in_hostfile: host homeserver filename /home/mt/.ssh/known_hosts
    debug3: check_host_in_hostfile: host homeserver filename /home/mt/.ssh/known_hosts
    debug3: check_host_in_hostfile: host homeserver filename /etc/ssh/ssh_known_hosts
    debug3: check_host_in_hostfile: host homeserver filename /etc/ssh/ssh_known_hosts
    debug3: check_host_in_hostfile: host 192.168.1.101 filename /home/mt/.ssh/known_hosts
    debug3: check_host_in_hostfile: host 192.168.1.101 filename /home/mt/.ssh/known_hosts
    debug3: check_host_in_hostfile: host 192.168.1.101 filename /etc/ssh/ssh_known_hosts
    debug3: check_host_in_hostfile: host 192.168.1.101 filename /etc/ssh/ssh_known_hosts
    debug3: check_host_in_hostfile: host homeserver filename /home/mt/.ssh/known_hosts
    debug3: check_host_in_hostfile: host homeserver filename /etc/ssh/ssh_known_hosts
    debug2: no key of type 0 for host homeserver
    debug3: check_host_in_hostfile: host homeserver filename /home/mt/.ssh/known_hosts2
    debug3: check_host_in_hostfile: host homeserver filename /etc/ssh/ssh_known_hosts2
    debug3: check_host_in_hostfile: host homeserver filename /home/mt/.ssh/known_hosts
    debug3: check_host_in_hostfile: host homeserver filename /etc/ssh/ssh_known_hosts
    debug2: no key of type 2 for host homeserver
    The authenticity of host 'homeserver (192.168.1.101)' can't be established.                                                                                                                                                                      
    RSA key fingerprint is 45:84:58:01:80:95:bb:71:0e:a3:66:2f:e6:cd:e9:34.
    Are you sure you want to continue connecting (yes/no)? yes
    Failed to add the host to the list of known hosts (/home/mt/.ssh/known_hosts).
    debug2: bits set: 1010/2048
    debug1: ssh_rsa_verify: signature correct
    debug2: kex_derive_keys
    debug2: set_newkeys: mode 1
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug2: set_newkeys: mode 0
    debug1: SSH2_MSG_NEWKEYS received
    debug1: Roaming not allowed by server
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug2: service_accept: ssh-userauth
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug2: key: /home/mt/.ssh/id_rsa (0x0)
    debug2: key: /home/mt/.ssh/id_dsa (0x0)
    debug1: Authentications that can continue: publickey,password
    debug3: start over, passed a different list publickey,password
    debug3: preferred publickey,keyboard-interactive,password
    debug3: authmethod_lookup publickey
    debug3: remaining preferred: keyboard-interactive,password
    debug3: authmethod_is_enabled publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: /home/mt/.ssh/id_rsa
    debug3: no such identity: /home/mt/.ssh/id_rsa
    debug1: Trying private key: /home/mt/.ssh/id_dsa
    debug3: no such identity: /home/mt/.ssh/id_dsa
    debug2: we did not send a packet, disable method
    debug3: authmethod_lookup password
    debug3: remaining preferred: ,password
    debug3: authmethod_is_enabled password
    debug1: Next authentication method: password
    minorthreat@homeserver's password:                                                                                                                                                                                                                   
    debug3: packet_send2: adding 48 (len 63 padlen 17 extra_pad 64)
    debug2: we sent a password packet, wait for reply
    debug1: Authentication succeeded (password).
    debug1: Local connections to localhost:8080 forwarded to remote address homeserver:8080
    debug3: channel_setup_fwd_listener: type 2 wildcard 0 addr NULL
    debug1: Local forwarding listening on 127.0.0.1 port 8080.
    debug2: fd 4 setting O_NONBLOCK
    debug3: fd 4 is O_NONBLOCK
    debug1: channel 0: new [port listener]
    debug1: channel 1: new [client-session]
    debug3: ssh_session2_open: channel_new: 1
    debug2: channel 1: send open
    debug1: Requesting [email protected]
    debug1: Entering interactive session.
    debug1: client_input_global_request: rtype [email protected] want_reply 0
    debug2: callback start
    debug2: client_session2_setup: id 1
    debug2: channel 1: request pty-req confirm 1
    debug2: channel 1: request shell confirm 1
    debug2: fd 3 setting TCP_NODELAY
    debug2: callback done
    debug2: channel 1: open confirm rwindow 0 rmax 32768
    debug2: channel_input_status_confirm: type 99 id 1
    debug2: PTY allocation request accepted on channel 1
    debug2: channel 1: rcvd adjust 2097152
    debug2: channel_input_status_confirm: type 99 id 1
    debug2: shell request accepted on channel 1
    Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-91-generic x86_64)
    

答案1

您的问题是,您告诉 SSH 连接到远程端的 homeserver:8080(转发连接),但您的 glassfish 并未绑定到该 IP;它绑定到 localhost。

尝试ssh -L 8080:localhost:8080 minorthreat@homeserver

相关内容