SSH gbogbogbò nipasẹ relay ń kùnà ní ẹ̀gbẹ́ méjì tí kò ní ìbáṣepọ̀, àti pé àtúnṣe ọ̀kan sábà máa ń fi ìdí kejì hàn. Yálà ẹ̀gbẹ́ náà dá ìdáhùn HTTP padà dípò kí ó gbé ìṣàn, tàbí relay náà fi àkọlé kan sí iwájú tí ẹ̀yìn kò gbà láti kà. Àwọn ipò mẹ́ta ló pinnu èyí tí ìwọ ń wò: ibi tí àkọsílẹ̀ gbogbogbò ń tọ́ka sí gan-an, ohun tí ìpín ìṣàn ń rán sí orí, àti orúkọ tí oníbàárà SSH ń ṣàyẹ̀wò. Ṣiṣẹ́ wọn ní ìtòlẹ́sẹẹsẹ yẹn.

Ẹ̀gbẹ́ méjì, àmì méjì

Ìkùnà ní ẹ̀gbẹ́ dàbí ojú-ìwé ipò HTTP tí ó dé ibi tí banner SSH yẹ kí ó wà. Ìsopọ̀ náà parí ní ìpele TCP, àwọn báìtì àkọ́kọ́ sì jẹ́ ọ̀rọ̀ tí ó jẹ́ ti server wẹ́ẹ̀bù. Ìyẹn jẹ́ àìbáramu protokọ́ọ̀lù, kì í ṣe pákẹ́tì tí ó sọnù. Ó tún sọ fún ọ pé ẹ̀gbẹ́ náà ń ṣe ìsìn ohun mìíràn pẹ̀lú ìmọ̀ fún orúkọ yẹn.

Ìkùnà ní orí ìṣàn yàtọ̀. Ìsopọ̀ náà dé sshd, sshd ka àwọn báìtì tí kì í ṣe pàṣípààrọ̀ ìdánimọ̀ tí ó retí, ipade náà sì kú tàbí ó dìgbà láìsí fúnni ní kọ́kọ́rọ́ rárá.

Ó rọrùn láti dà wọ́n pọ̀ nítorí àwọn méjèèjì ń ṣe oníbàárà tí ó so pọ̀ tí ó sì kùnà. Ìdáhùn protokọ́ọ̀lù àkọ́kọ́ tí o gbà ni ó yà wọ́n, ìdí nìyẹn tí ó fi yẹ kí ó wà nínú tikẹ́tì.

Àkọlé PROXY jẹ́ ìfiránṣẹ́, kì í ṣe ìyípadà

Nínú mọ́dùùlù ìṣàn, proxy_protocol on pàṣẹ fún NGINX láti kọ àkọlé protokọ́ọ̀lù PROXY sí ọ̀nà orí ṣáájú ẹrù. Kì í mú proxy TCP ṣiṣẹ́, kò sì ní ìbáṣepọ̀ pẹ̀lú ìdìbò SSH. Ó jẹ́ àkọsílẹ̀ tí a dá sí olùgbà. Bí olùgbà kò bá lè kà á, ó di pàǹtí ní ìbẹ̀rẹ̀ ìṣàn.

Iṣẹ́ tí ń gbà gbọ́dọ̀ lo àkọlé yẹn pẹ̀lú ìmọ̀. sshd déédé retí pàṣípààrọ̀ ìdánimọ̀ SSH gẹ́gẹ́ bí àwọn báìtì àkọ́kọ́ lórí ìsopọ̀, nítorí náà ìpilẹ̀sẹ̀ àìretí ń fọ́ ìfọwọ́sowọ́pọ̀ ní ọ̀nà tí ó dàbí server tí ó bàjẹ́.

stream {
    server {
        listen 2222;
        proxy_pass 10.77.0.20:22;
    }
}

Ẹ̀ka yẹn ni gbogbo relay tí ń ṣiṣẹ́ fún ẹ̀yìn tí a lè dé pẹ̀lú VPN. Kò sí ìtọ́nisọ́nà PROXY tí ó farahàn nítorí olùgbà kò sọ protokọ́ọ̀lù yẹn, àti àìsí yẹn jẹ́ ìpinnu, kì í ṣe àṣemáṣe.

Ya àwọn ọ̀nà méjèèjì sọ́tọ̀ pẹ̀lú. Ṣíṣe ètò proxy_protocol lórí ìlà listen túmọ̀ sí pé NGINX retí pé oníbàárà tirẹ̀ fúnra rẹ̀ ni yóò kọ́kọ́ rán àkọlé náà; mímú kí ó ṣiṣẹ́ fún oníbàárà SSH déédé ń dá ìdàkejì ohun tí àwọn ènìyàn sábà ń gbìyànjú láti yanjú.

Ohun tí orúkọ agbàlejò gbogbogbò ń dé

Ojú-ìwé HTTP 400 nínú ipade SSH jẹ́ ẹ̀rí nípa ẹ̀gbẹ́. Ohun kan lórí ọ̀nà ń sọ HTTP, kò sì sí iṣẹ́ kọ́kọ́rọ́ tàbí àkọsílẹ̀ ní ẹ̀yìn tí yóò yí i padà. Dáwọ́ dídá ẹ̀yìn padà títí ẹ̀gbẹ́ yóò fi yanjú.

Àkọsílẹ̀ proxy déédé ti Cloudflare ń gbé ìrìnnà HTTP àti HTTPS tí ó ṣe àtìlẹ́yìn fún lórí àwọn ebute tí a pààlà. Mímú proxy ṣiṣẹ́ fún orúkọ agbàlejò kò dá relay TCP gbogbogbò, gbígbé SSH sí ebute 443 kò sì sọ ọ́ di HTTPS.

Ọ̀nà méjì tí ó ṣeé ṣe wà. Àkọsílẹ̀ DNS nìkan lè tọ́ka sí relay TCP tirẹ̀, èyí tí ó fi ìpinnu ìfihàn sí ọwọ́ rẹ. Bí kò bá rí bẹ́ẹ̀, lo ọjà tí ó ṣàlàyé gbígbé SSH ní kedere, pẹ̀lú ètò orísun, oníbàárà àti ìwọlé tirẹ̀.

Ohunkóhun tí o bá yàn, relay náà ṣì nílò ọ̀nà VPN sí ẹ̀yìn, ìsopọ̀ tí a gbà àti ọ̀nà ìpadà. Ọ̀nà náà kì í ṣe àṣàyàn nítorí pé ẹ̀gbẹ́ gbogbogbò ń ṣiṣẹ́.

Jẹ́ kí ìdánimọ̀ SSH dúró ṣinṣin nípasẹ̀ orúkọ mìíràn

Àwọn olùmúlò sábà fẹ́ láti máa tẹ orúkọ agbàlejò wọn tí ó wà tẹ́lẹ̀. Orúkọ mìíràn nínú ètò SSH lè ṣe èyí láìyí ohunkóhun padà lórí relay, ó sì ń pa ìyípadà mọ́ ní ẹ̀gbẹ́ oníbàárà níbi tí ó yẹ.

Host git.example.com
    HostName ssh-entry.example.net
    Port 2222
    User git
    HostKeyAlias git.example.com

Láìsí HostKeyAlias, OpenSSH ń wá kọ́kọ́rọ́ agbàlejò lábẹ́ orúkọ tí ó so mọ́, nítorí náà àkọsílẹ̀ náà ń ṣí, gbogbo olùmúlò sì rí ìkìlọ̀ kọ́kọ́rọ́ tí ó yí padà ní àkọ́kọ́ lílò. Ṣíṣe ètò orúkọ mìíràn ń pa àwọn àkọsílẹ̀ known-hosts mọ́ ṣinṣin nígbà tí ìsopọ̀ ṣì ń lọ sí relay.

Orúkọ mìíràn yìí kàn àwọn ibi ìpamọ́ ọ̀nà jìn tí ó dá lórí SSH nìkan. URL Git HTTPS kò dà á lérò, URL ọ̀nà jìn déédé sì gbọdọ̀ bá ọ̀nà gbígbé tí o ti pèsè gan-an mu.

Ohun tí kò yẹ kí o ṣe ni fífòwọ́ kí ìṣàyẹ̀wò kọ́kọ́rọ́ agbàlejò má ṣiṣẹ́ kí ìkìlọ̀ lè lọ. Ìyẹn ń yọ ààbò kan tí àtúnṣe ìtọ́ni kò béèrè rárá pé kí a fọwọ́ kàn án, ó sì ń sọ ìdààmú ojú di ìfihàn gidi.

Ṣàyẹ̀wò gbogbo ìfojú lọ́tọ̀ọ̀tọ̀

Dán ìgbọ́ràn gbogbogbò wò ní èyíkéyìí, lẹ́yìn náà ìsopọ̀ relay-sí-ẹ̀yìn láti agbàlejò relay, àti lẹ́yìn náà nìkan ni oníbàárà láti ìbẹ̀rẹ̀ dé ìparí. Ọ̀kọ̀ọ̀kan nínú àwọn ìdánwò mẹ́ta yẹn yọ ìpele ọ̀tọ̀ọ̀tọ̀ kúrò. Fífo ọ̀kan sílẹ̀ túmọ̀ sí pé àwọn èsì méjì tí ó kù kò lè ní ìtúmọ̀. Àwòrán mẹ́ta, ibi mẹ́ta tí ìkùnà lè gbé.

Pa àdírẹ́sì ibi-ìlọ, ebute àti àwọn báìtì protokọ́ọ̀lù àkọ́kọ́ mọ́ pẹ̀lú gbogbo èsì. Àwọn mẹ́tẹ̀ẹ̀ta yẹn yà àṣìṣe ẹ̀gbẹ́ kúrò nínú ìṣòro ìtọ́nà VPN àti ìkùnà ìjẹ́rìí SSH, ìyẹn sì ni ìyàtọ̀ láàárín àtúnṣe àti àròsọ.

Níkẹyìn, ṣàkọsílẹ̀ ìfihàn tí a pinnu. Relay TCP tí ń gbé SSH sí ẹ̀yìn àdáni jẹ́ ṣíṣí ojú mọ̀ọ́mọ̀ nínú àyíká gbogbogbò, ó sì yẹ fún àyẹ̀wò kan náà bí iṣẹ́ tí ń wọlé mìíràn.

Àwọn àpilẹ̀kọ tó jọra