SSH ਫਾਰਵਰਡ ਰਾਹੀਂ ਸਿਰਫ਼ VPN ਰਾਹੀਂ ਉਪਲਬਧ HTTPS ਸਾਈਟ ਤੱਕ ਪਹੁੰਚਣਾ
ਸਿਰਫ਼ VPN ਰਾਹੀਂ ਉਪਲਬਧ ਇੱਕ HTTPS ਸੇਵਾ ਨੂੰ ਸਥਾਨਕ SSH ਫਾਰਵਰਡ ਨਾਲ ਜੋੜੋ, --connect-to ਨਾਲ ਅਸਲੀ ਹੋਸਟਨਾਮ ਰੱਖੋ, ਅਤੇ ਜਾਣੋ ਕਿ ਇੱਕ TCP ਫਾਰਵਰਡ ਕੀ ਨਹੀਂ ਢਕ ਸਕਦਾ।
ਇੱਕ ਮਸ਼ੀਨ ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਮਨਜ਼ੂਰਸ਼ੁਦਾ VPN ਪਹੁੰਚ ਹੈ, ਦੂਜੀ ਮਸ਼ੀਨ ਨੂੰ ਠੀਕ ਇੱਕ ਪ੍ਰਾਈਵੇਟ HTTPS ਸੇਵਾ ਚਾਹੀਦੀ ਹੈ, ਅਤੇ ਇੱਕ ਸਥਾਨਕ SSH ਫਾਰਵਰਡ ਦੂਜੀ ਮਸ਼ੀਨ ਨੂੰ ਟਨਲ ਦਿੱਤੇ ਬਿਨਾਂ ਇਹ ਖਾਲੀ ਥਾਂ ਭਰ ਸਕਦਾ ਹੈ। ਫਾਰਵਰਡ ਪੂਰੇ ਨੈੱਟਵਰਕ ਦੀ ਥਾਂ ਇੱਕ TCP ਮੰਜ਼ਿਲ ਲੈ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਹੀ ਸੀਮਾ ਮੁੱਖ ਗੱਲ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਪੰਜ ਕਦਮ ਕ੍ਰਮ ਵਿੱਚ ਪੂਰੇ ਕਰੋ, ਕਿਉਂਕਿ ਹਰ ਇੱਕ ਵੱਖਰੇ ਕਾਰਨ ਨਾਲ ਫੇਲ ਹੁੰਦਾ ਹੈ ਅਤੇ ਬਾਅਦ ਵਾਲਾ ਕਦਮ ਪਹਿਲਾਂ ਦੀ ਘਾਟ ਨਹੀਂ ਸੁਧਾਰ ਸਕਦਾ। ਜੇ ਕੋਈ ਵੀ ਪੂਰਵ ਸ਼ਰਤ ਗਾਇਬ ਹੈ, ਤਾਂ ਇਹ ਢਾਂਚਾ ਉਸ ਨੂੰ ਹੱਲ ਨਹੀਂ ਕਰਦਾ ਅਤੇ ਕਮਾਂਡ ਦੀ ਕੋਈ ਵੀ ਟਿਊਨਿੰਗ ਮਦਦ ਨਹੀਂ ਕਰੇਗੀ।
ਕਦਮ ਇੱਕ: ਤਿੰਨ ਪੂਰਵ ਸ਼ਰਤਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ
ਕਿਸੇ ਵੀ ਕਮਾਂਡ ਦਾ ਅਰਥ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਤਿੰਨ ਗੱਲਾਂ ਪਹਿਲਾਂ ਹੀ ਸੱਚੀਆਂ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ। ਪਹਿਲੀ ਮਸ਼ੀਨ ਨੂੰ ਫਾਰਵਰਡਿੰਗ ਹੋਸਟ ਵਜੋਂ ਵਰਤਣ ਦੀ ਇਜਾਜ਼ਤ, ਉਸ ਤੱਕ ਕੰਮ ਕਰਨ ਵਾਲੀ SSH ਪਹੁੰਚ, ਅਤੇ ਇੱਕ ਸਰਵਰ ਨੀਤੀ ਜੋ ਲੋੜੀਂਦੀ ਮੰਜ਼ਿਲ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ। ਫਾਈਲ ਟ੍ਰਾਂਸਫਰ ਲਈ ਬਣਾਏ SSH ਖਾਤੇ ਵਿੱਚ ਫਾਰਵਰਡਿੰਗ ਬੰਦ ਹੋ ਸਕਦੀ ਹੈ, ਅਤੇ ਫਾਰਵਰਡਿੰਗ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਵਾਲਾ ਸਰਵਰ ਵੀ ਸੀਮਤ ਕਰ ਸਕਦਾ ਹੈ ਕਿ ਇਸ ਰਾਹੀਂ ਕਿਹੜੀਆਂ ਮੰਜ਼ਿਲਾਂ ਤੱਕ ਪਹੁੰਚ ਹੈ। ਟੈਸਟ ਤੋਂ ਪਹਿਲਾਂ ਪੁੱਛੋ, ਕਿਉਂਕਿ ਸਹਿਮਤੀ ਤੋਂ ਬਿਨਾਂ ਕਿਸੇ ਸਹਿਕਰਮੀ ਦੇ ਵਰਕਸਟੇਸ਼ਨ ਨੂੰ ਜੰਪ ਪੁਆਇੰਟ ਵਜੋਂ ਵਰਤਣਾ ਨੀਤੀ ਦੀ ਸਮੱਸਿਆ ਹੈ, ਭਾਵੇਂ ਕਮਾਂਡ ਬਿਲਕੁਲ ਠੀਕ ਚੱਲੇ।
ਦੋ ਕਮਾਂਡਾਂ ਉਸ ਸੂਚੀ ਦਾ ਤਕਨੀਕੀ ਅੱਧਾ ਹਿੱਸਾ ਤੈਅ ਕਰਦੀਆਂ ਹਨ। ਪਹਿਲੀ ਸਾਬਤ ਕਰਦੀ ਹੈ ਕਿ ਖਾਤਾ ਅਤੇ ਕੁੰਜੀ ਇੰਟਰੈਕਟਿਵ ਪ੍ਰੋਂਪਟ ਤੋਂ ਬਿਨਾਂ ਕੰਮ ਕਰਦੇ ਹਨ, ਅਤੇ ਦੂਜੀ ਕਨਫਿਗਰੇਸ਼ਨ ਫਾਈਲ ਵਿੱਚ ਟਿੱਪਣੀ ਕੀਤੀ ਉਦਾਹਰਨ ਦੀ ਥਾਂ ਅਸਲ ਸਰਵਰ ਨੀਤੀ ਛਾਪਦੀ ਹੈ।
ssh -o BatchMode=yes [email protected] 'echo ok'
sudo sshd -T | grep -E 'allowtcpforwarding|permitopen'
ਕਦਮ ਦੋ: loopback ਪੋਰਟ ਬਾਈਂਡ ਕਰੋ ਅਤੇ ਸੈਸ਼ਨ ਜੀਵਤ ਰੱਖੋ
ਕਲਾਇੰਟ ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਉਣ ਵਾਲੀ ਮਸ਼ੀਨ 'ਤੇ ਪ੍ਰਾਈਵੇਟ ਸੇਵਾ ਲਈ ਸਥਾਨਕ ਫਾਰਵਰਡ ਖੋਲ੍ਹੋ। ਇਸ ਨੂੰ ਸਥਾਨਕ ਨੈੱਟਵਰਕ 'ਤੇ ਪ੍ਰਕਾਸ਼ਿਤ ਨਾ ਹੋਣ ਲਈ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ loopback ਨਾਲ ਬਾਈਂਡ ਕਰੋ, ਅਤੇ ਉੱਚਾ ਪੋਰਟ ਚੁਣੋ ਜੋ ਕੋਈ ਸਥਾਨਕ ਸੇਵਾ ਪਹਿਲਾਂ ਹੀ ਨਾ ਰੋਕ ਰਹੀ ਹੋਵੇ। ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਸੈਸ਼ਨ ਚਾਲੂ ਰੱਖੋ, ਕਿਉਂਕਿ ਇਸ ਨੂੰ ਬੰਦ ਕਰਨ ਨਾਲ ਸਰੋਤਾ ਵੀ ਬੰਦ ਹੋ ਜਾਂਦਾ ਹੈ। ExitOnForwardFailure ਰੱਦ ਕੀਤੀ ਬਾਈਂਡਿੰਗ ਜਾਂ ਕਬਜ਼ੇ ਵਾਲੇ ਪੋਰਟ ਨੂੰ ਫਾਰਵਰਡ ਤੋਂ ਬਿਨਾਂ ਰਹਿਣ ਵਾਲੇ ਸੈਸ਼ਨ ਦੀ ਥਾਂ ਤੁਰੰਤ ਬਾਹਰ ਨਿਕਲਣ ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਅਤੇ ਇਹੀ ਫੇਲ ਹੋਣ ਦਾ ਤਰੀਕਾ ਸਭ ਤੋਂ ਵੱਧ ਸਮਾਂ ਬਰਬਾਦ ਕਰਦਾ ਹੈ।
ਪ੍ਰਾਈਵੇਟ ਕਨੈਕਸ਼ਨ ਜੰਪ ਹੋਸਟ ਤੋਂ ਬਣਦਾ ਹੈ, ਇਸ ਲਈ ਉਸ ਹੋਸਟ ਦੇ DNS, ਰੂਟ, VPN ਨੀਤੀ ਅਤੇ ਸੇਵਾ ਪਹੁੰਚ ਸਭ ਨੂੰ ਕੰਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। SSH ਸੈਸ਼ਨ ਉਹ ਪਹੁੰਚ ਨਹੀਂ ਬਣਾਉਂਦਾ ਜੋ ਜੰਪ ਹੋਸਟ ਕੋਲ ਨਹੀਂ ਹੈ, ਅਤੇ ਉਹ ਰੂਟ ਠੀਕ ਨਹੀਂ ਕਰ ਸਕਦਾ ਜੋ VPN ਨੇ ਕਦੇ ਨਹੀਂ ਭੇਜਿਆ। ਕਮਾਂਡ ਦੀ ਚੁੱਪ 'ਤੇ ਭਰੋਸਾ ਕਰਨ ਦੀ ਥਾਂ ਸਰੋਤਾ ਨੂੰ ਉੱਥੇ ਤਸਦੀਕ ਕਰੋ ਜਿੱਥੇ ਉਹ ਅਸਲ ਵਿੱਚ ਹੈ।
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:9443:portal.lab.example:443 [email protected]
ss -ltn '( sport = :9443 )'
ਕਦਮ ਤਿੰਨ: ਸਾਕਟ ਸਥਾਨਕ ਹੋਣ ਵੇਲੇ HTTPS ਨਾਮ ਰੱਖੋ
https://127.0.0.1:9443/ 'ਤੇ ਬ੍ਰਾਊਜ਼ ਕਰਨ ਨਾਲ TLS ਸਰਵਰ ਨਾਮ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ ਅਧਿਕਾਰ ਬਦਲ ਜਾਂਦਾ ਹੈ। portal.lab.example ਲਈ ਜਾਰੀ ਸਰਟੀਫਿਕੇਟ loopback ਪਤੇ ਦੇ ਵਿਰੁੱਧ ਜਾਇਜ਼ ਨਹੀਂ ਹੋਵੇਗਾ, ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ ਆਉਣ ਵਾਲੀ ਗਲਤੀ ਫਾਰਵਰਡਿੰਗ ਸ਼ਾਰਟਕਟ ਦੀ ਥਾਂ ਟੁੱਟੇ ਸਰਟੀਫਿਕੇਟ ਵਰਗੀ ਦਿਸਦੀ ਹੈ। ਕਮਾਂਡ-ਲਾਈਨ ਟੈਸਟ ਲਈ ਅਸਲੀ URL ਰੱਖੋ ਅਤੇ ਸਿਰਫ਼ ਸਾਕਟ ਮੰਜ਼ਿਲ ਬਦਲੋ। --connect-to ਇਹੀ ਕਰਦਾ ਹੈ, ਅਤੇ curl ਮੈਨੂਅਲ ਹੇਠਾਂ ਵਰਤਿਆ ਗਿਆ ਚਾਰ-ਖੇਤਰੀ ਰੂਪ ਦਸਤਾਵੇਜ਼ ਕਰਦਾ ਹੈ।
curl --noproxy portal.lab.example --connect-to portal.lab.example:443:127.0.0.1:9443 https://portal.lab.example/
ਨਾਮ URL ਵਿੱਚ, TLS ਹੈਂਡਸ਼ੇਕ ਵਿੱਚ ਅਤੇ Host ਹੈਡਰ ਵਿੱਚ ਰਹਿੰਦਾ ਹੈ, ਜਦਕਿ TCP ਕਨੈਕਸ਼ਨ ਸਥਾਨਕ ਸਰੋਤੇ ਵੱਲ ਜਾਂਦਾ ਹੈ। ਨੋ-ਪ੍ਰੌਕਸੀ ਵਿਕਲਪ ਟੈਸਟ ਨੂੰ ਇਸੇ ਫਾਰਵਰਡ 'ਤੇ ਰੱਖਦਾ ਹੈ, ਕਨਫਿਗਰ ਕੀਤੇ HTTP ਪ੍ਰੌਕਸੀ ਨੂੰ ਇਸ ਨੂੰ ਰੋਕਣ ਦੇਣ ਦੀ ਥਾਂ, ਅਤੇ ਸਰਟੀਫਿਕੇਟ ਜਾਂਚ ਚਾਲੂ ਰੱਖਣਾ ਹੀ ਨਤੀਜੇ ਨੂੰ ਅਰਥਪੂਰਨ ਬਣਾਉਂਦਾ ਹੈ।
ਕਦਮ ਚਾਰ: ਜਾਣੋ ਕਿ ਇੱਕ ਫਾਰਵਰਡ ਕੀ ਨਹੀਂ ਢਕ ਸਕਦਾ
ਇੱਕ TCP ਫਾਰਵਰਡ ਇੱਕ ਮੰਜ਼ਿਲ ਪੋਰਟ ਢਕਦਾ ਹੈ। ਜੋ ਸਫ਼ਾ ਦੂਜੇ ਹੋਸਟਨਾਮ 'ਤੇ ਰੀਡਾਇਰੈਕਟ ਕਰਦਾ ਹੈ, ਪ੍ਰਾਈਵੇਟ ਨੈੱਟਵਰਕ ਦੇ ਅੰਦਰਲੇ ਹੋਸਟ ਤੋਂ ਸਰੋਤ ਲੋਡ ਕਰਦਾ ਹੈ ਜਾਂ ਕਿਸੇ ਹੋਰ ਪੋਰਟ 'ਤੇ ਭੇਜਦਾ ਹੈ, ਉਸ ਨੂੰ ਆਪਣਾ ਫਾਰਵਰਡ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ ਨੂੰ ਪਹਿਲੇ ਵਰਗੀ ਨੀਤੀ ਜਾਂਚ ਚਾਹੀਦੀ ਹੈ। ਬ੍ਰਾਊਜ਼ਰ ਕਾਰਜਪ੍ਰਵਾਹ ਆਪਣੀਆਂ ਲੋੜਾਂ ਜੋੜਦੇ ਹਨ, ਕਿਉਂਕਿ ਪ੍ਰੌਕਸੀ ਕਨਫਿਗਰੇਸ਼ਨ ਜਾਂ ਸਥਾਨਕ ਮੈਪਿੰਗ ਰਾਹੀਂ ਅਸਲੀ ਨਾਮ ਸਥਾਨਕ ਪੋਰਟ 'ਤੇ ਭੇਜਣ ਲਈ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਕਿਹਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਲਈ ਸਫਲ ਕਮਾਂਡ-ਲਾਈਨ ਟੈਸਟ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ ਬ੍ਰਾਊਜ਼ਰ ਵੀ ਸਫਲ ਹੋਵੇਗਾ, ਭਾਵੇਂ ਇਹ ਰਾਹ ਸਾਬਤ ਕਰਦਾ ਹੈ।
UDP, SMB ਖੋਜ ਅਤੇ ਡੋਮੇਨ ਸਾਈਨ-ਇਨ TCP ਫਾਰਵਰਡ ਰਾਹੀਂ ਬਿਲਕੁਲ ਨਹੀਂ ਲੰਘਦੇ। ਜੇ ਅਸਲੀ ਲੋੜ ਆਮ ਨੈੱਟਵਰਕ ਪਹੁੰਚ ਹੈ, ਤਾਂ ਇਹ ਢਾਂਚਾ ਗਲਤ ਸਾਧਨ ਹੈ ਅਤੇ ਸਮਰਥਿਤ ਰਿਮੋਟ-ਪਹੁੰਚ ਗੇਟਵੇ ਸਹੀ ਹੈ।
ਕਦਮ ਪੰਜ: ਸਫ਼ਾਈ ਕਰੋ ਅਤੇ ਦਰਜ ਕਰੋ
ਟੈਸਟ ਖਤਮ ਹੋਣ 'ਤੇ ਸੈਸ਼ਨ ਰੋਕੋ ਅਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਸਰੋਤਾ ਚਲਾ ਗਿਆ ਹੈ। ਜੇ ਚੁਣਿਆ ਪੋਰਟ ਪਹਿਲਾਂ ਹੀ ਕਬਜ਼ੇ ਵਿੱਚ ਸੀ, ਤਾਂ ਨੰਬਰ ਖਾਲੀ ਕਰਨ ਲਈ ਕਿਸੇ ਅਸੰਬੰਧਿਤ ਸਥਾਨਕ ਸੇਵਾ ਨੂੰ ਰੋਕਣ ਦੀ ਥਾਂ ਕੋਈ ਹੋਰ ਨਾ-ਵਰਤਿਆ loopback ਪੋਰਟ ਚੁਣੋ ਅਤੇ URL, ਟੈਸਟ ਕਮਾਂਡ ਅਤੇ ਨੋਟ ਇਕੱਠੇ ਅਪਡੇਟ ਕਰੋ। ਲੈਪਟਾਪ 'ਤੇ ਫਾਰਵਰਡ ਖੁੱਲ੍ਹਾ ਛੱਡਣਾ ਨਿਦਾਨ ਨੂੰ ਬਿਨਾਂ ਸੰਭਾਲ ਵਾਲੀ ਸੇਵਾ ਬਣਾ ਦਿੰਦਾ ਹੈ।
ਜੰਪ ਹੋਸਟ, ਫਾਰਵਰਡ ਕੀਤੀ ਮੰਜ਼ਿਲ, ਸਥਾਨਕ ਪੋਰਟ ਅਤੇ ਇਹ ਬੰਦੋਬਸਤ ਕਿਸ ਨੇ ਮਨਜ਼ੂਰ ਕੀਤੀ, ਲਿਖੋ। ਜੋ ਫਾਰਵਰਡ ਸਿਰਫ਼ ਕਿਸੇ ਦੇ shell ਇਤਿਹਾਸ ਵਿੱਚ ਹੈ, ਉਹ ਇੱਕ ਰੀਬੂਟ ਦੂਰ ਦੁਹਰਾਈ ਜਾਂਚ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਅਗਲੇ ਵਿਅਕਤੀ ਨੂੰ ਪਤਾ ਨਹੀਂ ਹੋਵੇਗਾ ਕਿ ਤਿੰਨ ਪੂਰਵ ਸ਼ਰਤਾਂ ਵਿੱਚੋਂ ਕਿਹੜੀ ਪਹਿਲਾਂ ਹੀ ਜਾਂਚੀ ਜਾ ਚੁੱਕੀ ਹੈ।