ਟਰਮੀਨਲ ਜੁੜਦਾ ਹੈ, ਪ੍ਰੋਂਪਟ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਸਾਰੇ ਸਹਿਮਤ ਹਨ ਕਿ SSH ਪਹੁੰਚ ਕੰਮ ਕਰਦੀ ਹੈ। ਫਿਰ ਲੈਪਟਾਪ ਉੱਤੇ ਇੱਕ ਡੇਟਾਬੇਸ ਕਲਾਇੰਟ ਅਜੇ ਵੀ ਨਿੱਜੀ ਹੋਸਟ ਤੱਕ ਨਹੀਂ ਪਹੁੰਚ ਸਕਦਾ, ਅਤੇ ਸੈਸ਼ਨ ਨੂੰ ਦੋਸ਼ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਜੋ ਬਣਾਇਆ ਗਿਆ ਸੀ ਉਹ ਸ਼ੈੱਲ ਸੀ, ਅਤੇ ਇਹ SSH ਦੁਆਰਾ ਦਿੱਤੇ ਜਾ ਸਕਣ ਵਾਲੇ ਚਾਰ ਬਿਲਕੁਲ ਵੱਖਰੇ ਇੰਟਰਫੇਸਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਪਹਿਲਾਂ ਇੰਟਰਫੇਸ ਦਾ ਨਾਮ ਦੱਸੋ, ਫਿਰ ਜਾਂਚੋ ਕਿ ਐਪ ਅਸਲ ਵਿੱਚ ਇਸਨੂੰ ਵਰਤਦੀ ਹੈ। ਕ੍ਰਮ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਕਿਉਂਕਿ ਹਰ ਇੰਟਰਫੇਸ ਆਪਣੇ ਢੰਗ ਨਾਲ ਅਸਫਲ ਹੁੰਦਾ ਹੈ।

ਕੁਝ ਵੀ ਤੁਲਨਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇੰਟਰਫੇਸ ਦਾ ਨਾਮ ਦੱਸੋ

OpenSSH ਕਲਾਇੰਟ ਮੈਨੂਅਲ ਚਾਰ ਅਜਿਹੀਆਂ ਵਿਧੀਆਂ ਵੱਖ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਮਿਲਾਉਣਾ ਸੌਖਾ ਹੈ। ਇੱਕ ਸ਼ੈੱਲ ਜਾਂ ਦੂਰਸਥ ਕਮਾਂਡ SSH ਹੋਸਟ ਉੱਤੇ ਚੱਲਦੀ ਹੈ। ਸਥਾਨਕ ਫਾਰਵਰਡ ਕਲਾਇੰਟ ਉੱਤੇ ਸੁਣਨ ਵਾਲਾ ਸਾਕੇਟ ਖੋਲ੍ਹਦਾ ਹੈ ਅਤੇ ਅਗਲਾ ਕਨੈਕਸ਼ਨ ਦੂਰਸਥ ਪਾਸਿਓਂ ਕਰਦਾ ਹੈ। ਦੂਰਸਥ ਫਾਰਵਰਡ ਉਲਟਾ ਕਰਦਾ ਹੈ, ਸਰਵਰ ਪਾਸੇ ਸੁਣਦਾ ਹੋਇਆ। ਗਤੀਸ਼ੀਲ ਫਾਰਵਰਡਿੰਗ ਉਹਨਾਂ ਪ੍ਰੋਗਰਾਮਾਂ ਲਈ SOCKS ਅੰਤ ਬਿੰਦੂ ਦਿੰਦੀ ਹੈ ਜੋ ਇਸਨੂੰ ਵਰਤਣਾ ਜਾਣਦੇ ਹਨ।

  • ਸ਼ੈੱਲ: ਪ੍ਰੋਗਰਾਮ ਦੂਰਸਥ ਮਸ਼ੀਨ ਉੱਤੇ ਚੱਲਦਾ ਹੈ, ਸਥਾਨਕ ਤੌਰ ਉੱਤੇ ਕੁਝ ਵੀ ਨਹੀਂ ਸੁਣਦਾ।
  • ਸਥਾਨਕ ਫਾਰਵਰਡ: ਤੁਹਾਡੇ ਲੈਪਟਾਪ ਵਿੱਚ ਇੱਕ ਪੋਰਟ ਹੈ, ਦੂਰਸਥ ਹੋਸਟ ਬਾਹਰ ਜਾਣ ਵਾਲਾ ਕਨੈਕਸ਼ਨ ਕਰਦਾ ਹੈ।
  • ਦੂਰਸਥ ਫਾਰਵਰਡ: ਦੂਰਸਥ ਪਾਸੇ ਇੱਕ ਪੋਰਟ ਹੈ, ਟ੍ਰੈਫਿਕ ਤੁਹਾਡੇ ਵੱਲ ਵਾਪਸ ਆਉਂਦਾ ਹੈ।
  • ਗਤੀਸ਼ੀਲ: ਕਲਾਇੰਟ ਉੱਤੇ SOCKS ਪ੍ਰੌਕਸੀ, ਸਿਰਫ਼ ਪ੍ਰੌਕਸੀ ਸਮਝਣ ਵਾਲੀਆਂ ਐਪਾਂ ਵਰਤਦੀਆਂ ਹਨ।

ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਰੂਟ ਸਥਾਪਿਤ ਨਹੀਂ ਕਰਦਾ। ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨ ਵਾਲਾ, ਜਾਂ UDP ਬੋਲਣ ਵਾਲਾ, ਜਾਂ ਨਾਮ ਖੁਦ ਹੱਲ ਕਰਨ ਵਾਲਾ ਪ੍ਰੋਗਰਾਮ, ਉਸ ਉੱਤੇ ਸਰਗਰਮ SSH ਸੈਸ਼ਨ ਦਾ ਅਸਰ ਨਹੀਂ ਹੁੰਦਾ। ਇਹ SSH ਵਿੱਚ ਖਰਾਬੀ ਨਹੀਂ ਹੈ; ਇਹ ਤੁਹਾਡੇ ਚੁਣੇ ਇੰਟਰਫੇਸ ਦਾ ਦਾਇਰਾ ਹੈ।

ਸਥਾਨਕ, ਦੂਰਸਥ ਅਤੇ ਗਤੀਸ਼ੀਲ ਫਾਰਵਰਡ ਇਸ ਵਿੱਚ ਵੱਖਰੇ ਹਨ ਕਿ ਕੌਣ ਸੁਣਦਾ ਹੈ

ਬਹੁਤੇ ਮਾਮਲੇ ਤੈਅ ਕਰਨ ਵਾਲਾ ਫ਼ਰਕ ਇਹ ਹੈ ਕਿ ਸੁਣਨ ਵਾਲਾ ਸਾਕੇਟ ਕਿਸਦਾ ਹੈ। ਸਥਾਨਕ ਫਾਰਵਰਡ ਵਿੱਚ ਕਲਾਇੰਟ ਸੁਣਦਾ ਹੈ ਅਤੇ ਦੂਰ ਵਾਲਾ ਸਿਰਾ ਮੰਜ਼ਿਲ ਨੂੰ ਡਾਇਲ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਮੰਜ਼ਿਲ ਦਾ ਪਤਾ ਸਰਵਰ ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਤੋਂ ਹੱਲ ਹੁੰਦਾ ਹੈ। ਦੂਰਸਥ ਫਾਰਵਰਡ ਵਿੱਚ ਸਰਵਰ ਸੁਣਦਾ ਹੈ ਅਤੇ ਕਨੈਕਸ਼ਨ ਤੁਹਾਡੇ ਪਾਸੇ ਵਾਪਸ ਲਿਜਾਇਆ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਤੁਸੀਂ ਸਥਾਨਕ ਸੇਵਾ ਨੂੰ ਸਿੱਧਾ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤੇ ਬਿਨਾਂ ਉਜਾਗਰ ਕਰਦੇ ਹੋ।

ssh -N -L 5432:db.internal.example:5432 [email protected]
ssh -N -D 1080 [email protected]
ss -ltnp | grep -E '5432|1080'

ਪਹਿਲੀ ਕਮਾਂਡ ਲੈਪਟਾਪ ਉੱਤੇ ਪੋਰਟ 5432 ਬੰਨ੍ਹਦੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਡੇਟਾਬੇਸ ਵੱਲ ਫਾਰਵਰਡ ਕਰਦੀ ਹੈ ਜਿਵੇਂ ਇਹ ਬਾਸਟੀਅਨ ਤੋਂ ਦਿਸਦਾ ਹੈ। ਦੂਜੀ ਪੋਰਟ 1080 ਉੱਤੇ SOCKS ਪ੍ਰੌਕਸੀ ਬਣਾਉਂਦੀ ਹੈ। ਤੀਜੀ ਕਮਾਂਡ ਪੁਸ਼ਟੀ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜੀਆਂ ਪ੍ਰਕਿਰਿਆਵਾਂ ਅਸਲ ਵਿੱਚ ਸੁਣ ਰਹੀਆਂ ਹਨ, ਅਤੇ ਪੋਰਟ ਟਕਰਾਅ ਕਾਰਨ ਚੁੱਪਚਾਪ ਅਸਫਲ ਹੋਣ ਦੀ ਬਜਾਏ ਫਾਰਵਰਡ ਹੋਣ ਦਾ ਇਹੀ ਇੱਕੋ ਸਬੂਤ ਹੈ।

ਗਤੀਸ਼ੀਲ ਫਾਰਵਰਡਿੰਗ ਆਪਣੀ ਵੱਖਰੀ ਚੇਤਾਵਨੀ ਦੀ ਹੱਕਦਾਰ ਹੈ: ਇਹ ਸਿਰਫ਼ ਉਹਨਾਂ ਐਪਾਂ ਨੂੰ ਕਵਰ ਕਰਦੀ ਹੈ ਜੋ SOCKS ਦਾ ਸਤਿਕਾਰ ਕਰਦੀਆਂ ਹਨ। ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਇਸ ਵੱਲ ਨਿਰਦੇਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ ਨੂੰ ਇਸਨੂੰ ਵਰਤਣ ਲਈ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ, ਪਰ ਆਪਣਾ ਕਨੈਕਸ਼ਨ ਸਟੈਕ ਰੱਖਣ ਵਾਲਾ ਡੇਟਾਬੇਸ ਡਰਾਈਵਰ ਆਮ ਤੌਰ ਉੱਤੇ ਅਜਿਹਾ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇਹ ਮੰਨਣਾ ਕਿ ਮਸ਼ੀਨ ਦਾ ਹਰ ਪ੍ਰੋਗਰਾਮ ਹੁਣ ਟਨਲ ਵਰਤਦਾ ਹੈ, ਇਸ ਪੂਰੇ ਖੇਤਰ ਦੀ ਸਭ ਤੋਂ ਆਮ ਗਲਤੀ ਹੈ।

ਟਨਲ-ਡਿਵਾਈਸ ਮੋਡ ਹੀ ਇੱਕੋ ਅਸਲ ਨੈੱਟਵਰਕ ਅਪਵਾਦ ਹੈ

OpenSSH -w ਟਨਲ-ਡਿਵਾਈਸ ਫਾਰਵਰਡਿੰਗ ਦਾ ਵੀ ਸਮਰਥਨ ਕਰਦਾ ਹੈ, ਜੋ TCP ਸਰੋਤੇ ਦੀ ਬਜਾਏ ਪੁਆਇੰਟ-ਟੂ-ਪੁਆਇੰਟ ਇੰਟਰਫੇਸ ਲੰਘਾਉਂਦਾ ਹੈ। ਇਹ ਅਸਲ ਨੈੱਟਵਰਕ ਟਨਲ ਹੈ, ਅਤੇ ਇਹ ਜਾਣ-ਬੁੱਝ ਕੇ ਸੰਰਚਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਸ਼ੈੱਲ ਖੋਲ੍ਹਣ ਦਾ ਮਾੜਾ ਪ੍ਰਭਾਵ ਨਹੀਂ।

sudo ssh -w 0:0 [email protected]
ip addr show tun0

ਇਸ ਲਈ ਦੋਵੇਂ ਸਿਰਿਆਂ ਉੱਤੇ ਉਪਲਬਧ ਸੰਬੰਧਿਤ ਇੰਟਰਫੇਸ ਨੰਬਰ, ਸਰਵਰ ਉੱਤੇ ਸਹੀ ਸੰਰਚਨਾ ਅਤੇ ਡਿਵਾਈਸ ਬਣਾਉਣ ਲਈ ਕਲਾਇੰਟ ਉੱਤੇ ਕਾਫ਼ੀ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਚਾਹੀਦੇ ਹਨ। ਇਸ ਲਈ ਪਤਾ ਅਤੇ ਰਾਊਟਿੰਗ ਯੋਜਨਾ ਵੀ ਚਾਹੀਦੀ ਹੈ, ਕਿਉਂਕਿ ਨੰਗਾ ਇੰਟਰਫੇਸ ਇਸ ਬਾਰੇ ਕੋਈ ਨੀਤੀ ਨਹੀਂ ਰੱਖਦਾ ਕਿ ਕਿਹੜੀਆਂ ਮੰਜ਼ਿਲਾਂ ਇਸਨੂੰ ਵਰਤਣ।

ਫਿਰ ਵੀ ਟਨਲ ਦੂਰਸਥ ਹੋਸਟ ਉੱਤੇ ਖਤਮ ਹੁੰਦਾ ਹੈ। SSH ਆਵਾਜਾਈ ਨੇ ਜੋ ਵੀ ਸੁਰੱਖਿਆ ਦਿੱਤੀ, ਉਹ ਉੱਥੇ ਹੀ ਖਤਮ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਅਗਲਾ ਕਨੈਕਸ਼ਨ ਇੱਕ ਵੱਖਰੀ ਛਾਲ ਹੈ। VPN ਗੇਟਵੇ ਦੀ ਸੀਮਾ ਦਾ ਵੀ ਉਹੀ ਆਕਾਰ ਹੈ, ਇਸ ਲਈ ਤੁਲਨਾ ਇਸ ਬਾਰੇ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਕਿ ਦਾਇਰਾ ਅਤੇ ਅੰਤ ਕਿੱਥੇ ਹੈ, ਨਾ ਕਿ ਇਸ ਬਾਰੇ ਕਿ ਕਿਹੜਾ ਸਾਧਨ ਵਧੇਰੇ ਮਜ਼ਬੂਤ ਹੈ। ਉਸ ਸੀਮਾ ਦਾ ਉੱਚੀ ਆਵਾਜ਼ ਵਿੱਚ ਨਾਮ ਦੇਣਾ ਇਸ ਬਹਿਸ ਨੂੰ ਵੀ ਨਿਪਟਾਉਂਦਾ ਹੈ ਕਿ ਟਨਲ «ਸਭ ਕੁਝ ਐਨਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ», ਕਿਉਂਕਿ ਇਹ ਸਪੱਸ਼ਟ ਤੌਰ ਉੱਤੇ ਨਹੀਂ ਕਰਦਾ।

ਜਾਂਚੋ ਕਿ ਤੁਹਾਡੀ ਐਪ ਤੁਹਾਡੇ ਬਣਾਏ ਇੰਟਰਫੇਸ ਨੂੰ ਵਰਤਦੀ ਹੈ

ਤਸਦੀਕ ਹਰ ਐਪ ਲਈ ਹੈ, ਸੈਸ਼ਨ ਲਈ ਨਹੀਂ। ਕੰਮ ਕਰਦਾ ਫਾਰਵਰਡ ਸਾਬਤ ਕਰਦਾ ਹੈ ਕਿ ਪੋਰਟ ਬੱਝਾ ਹੋਇਆ ਹੈ ਅਤੇ ਦੂਰ ਵਾਲਾ ਸਿਰਾ ਡਾਇਲ ਕਰ ਸਕਦਾ ਹੈ; ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ ਤੁਹਾਡੇ ਲਈ ਮਹੱਤਵਪੂਰਨ ਪ੍ਰੋਗਰਾਮ ਇਸ ਰਾਹੀਂ ਜੁੜਿਆ ਸੀ।

curl -sS --socks5-hostname 127.0.0.1:1080 -o /dev/null -w '%{http_code}\n' https://app.internal.example/health
psql "host=127.0.0.1 port=5432 dbname=app sslmode=require" -c 'select 1'

ਪਹਿਲੀ ਕਮਾਂਡ ਹੋਸਟਨਾਮ ਨੂੰ ਦੂਰੋਂ ਹੱਲ ਕਰਦਿਆਂ SOCKS ਅੰਤ ਬਿੰਦੂ ਰਾਹੀਂ ਬੇਨਤੀ ਭੇਜਦੀ ਹੈ, ਅਤੇ ਦੂਜੀ TLS ਦੇ ਅਜੇ ਵੀ ਲਾਜ਼ਮੀ ਰਹਿੰਦਿਆਂ ਫਾਰਵਰਡ ਕੀਤੇ ਡੇਟਾਬੇਸ ਪੋਰਟ ਨੂੰ ਵਰਤ ਕੇ ਦੇਖਦੀ ਹੈ। ਫਾਰਵਰਡ ਬੰਦ ਰੱਖਦਿਆਂ ਉਹੀ ਟੈਸਟ ਚਲਾਓ ਤਾਂ ਜੋ ਪੁਸ਼ਟੀ ਹੋਵੇ ਕਿ ਉਹ ਅਸਫਲ ਹੁੰਦੇ ਹਨ, ਕਿਉਂਕਿ ਦੋਵੇਂ ਤਰੀਕਿਆਂ ਨਾਲ ਪਾਸ ਹੋਣ ਵਾਲਾ ਟੈਸਟ ਕਦੇ ਵੀ ਟਨਲ ਨਹੀਂ ਵਰਤਦਾ ਸੀ।

ਫਿਰ ਰਾਊਟਿਡ VPN ਨਾਲ ਸਿਰਫ਼ ਉਹਨਾਂ ਪਸਾਰਾਂ ਉੱਤੇ ਤੁਲਨਾ ਕਰੋ ਜੋ ਮਾਅਨੇ ਰੱਖਦੇ ਹਨ: ਕਿਹੜੀਆਂ ਮੰਜ਼ਿਲਾਂ ਕਵਰ ਹਨ, ਕਿਹੜੇ ਪ੍ਰੋਟੋਕੋਲ ਕੰਮ ਕਰਦੇ ਹਨ, ਸੁਰੱਖਿਆ ਕਿੱਥੇ ਖਤਮ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਪਹੁੰਚ ਨੂੰ ਕੌਣ ਮਨਜ਼ੂਰੀ ਦਿੰਦਾ ਹੈ। ਇੱਕ ਸੇਵਾ ਦਾ ਫਾਰਵਰਡ ਵਧੇਰੇ ਤੰਗ ਅਤੇ ਬਿਹਤਰ ਜਵਾਬ ਹੋ ਸਕਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਬਹੁਤੀਆਂ ਐਪਾਂ ਨੂੰ ਇੱਕੋ ਨੈੱਟਵਰਕ ਰਾਹ ਚਾਹੀਦਾ ਹੋਵੇ ਤਾਂ VPN ਸਹੀ ਆਕਾਰ ਹੈ। ਦੋਵਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਆਪਣੇ ਦੂਰਸਥ ਅੰਤ ਬਿੰਦੂ ਤੋਂ ਪਹੁੰਚਯੋਗ ਸਭ ਕੁਝ ਨਹੀਂ ਦਿੰਦਾ।

ਸੰਬੰਧਿਤ ਲੇਖ