ssh port forwarding въпрос
5 отговора
0 прегледа
ssh port forwarding въпрос
Имам малко странен въпрос за ssh & port forwarding. :)
Значи, искам да направя port forwarding от отдалечената машина към локалната, но не знам предварително кои портове са свободни на отдалечената машина. Т.е. искам като се вържа на alabala.com, всички връзки към даден локален порт да бъдат прехвърляни на локалния порт 5640. Нещо като:
но вместо 6666 да е произволен свободен порт, който мога да разбера за да знам какво да използвам.
Струва ми се, че не може да стане със ssh, но реших все пак да попитам за second opinion :)
Значи, искам да направя port forwarding от отдалечената машина към локалната, но не знам предварително кои портове са свободни на отдалечената машина. Т.е. искам като се вържа на alabala.com, всички връзки към даден локален порт да бъдат прехвърляни на локалния порт 5640. Нещо като:
ssh -R 6666:127.0.0.1:5640 alabala.com
но вместо 6666 да е произволен свободен порт, който мога да разбера за да знам какво да използвам.
Струва ми се, че не може да стане със ssh, но реших все пак да попитам за second opinion :)
Re: ssh port forwarding въпрос
В отговор на:
който мога да разбера за да знам какво да използвам.
Това нещо не го разбирам. Всъщност целия въпрос не разбирам. Кой порт знаеш? 6666 или 5640? Някой фиксиран ли е? Или търсиш първия свободен, нещо не съм в час.
Сега едно предложение като от програмист (админите вероятно ще ме обесят за такова нещо): пусни си командата дето си я написъл в цикъл (в скрипт например, или си напиши едно малко демонче).
ами
ако портът е зает и не се логваш с руут (най-вероятно) ще ти хвърли това - Warning: remote port forwarding failed for listen port 6666
можеш да шибнеш нещата в цикъл и да обходиш няколко произволни порта, но наистина е леко просташко. :) от друг страна вероатността да нацелиш зает порт над 32к е малка...
можеш да шибнеш нещата в цикъл и да обходиш няколко произволни порта, но наистина е леко просташко. :) от друг страна вероатността да нацелиш зает порт над 32к е малка...
Re: ssh port forwarding въпрос
разбира се, че ще те обесят, то си е за бесене..
по-добре като програмист, му предложи да си напише нещо елементарно на ц, да опитва с bind() поредни след 1024 портове, да чака 0 като return от bind()-а, и т.н., тои знае какво още
по-добре като програмист, му предложи да си напише нещо елементарно на ц, да опитва с bind() поредни след 1024 портове, да чака 0 като return от bind()-а, и т.н., тои знае какво още
Re: ssh port forwarding въпрос
OK, ще се опитам да обясня по-подробно...
Имам една програма, да кажем, че се казва cprog. Тя получава като аргументи име на отдалечен сървър (serv) и програма, която да стартира (cmd). Трябва да направи еквивалента на интерактивна сесия подобно на ssh -t serv cmd, но с едно допълнение. cprog стартира service, който е индивидуален за всяко стартирано копие. Service-а чака на произволен свободен локален порт (програмистите знаят как се прави, не включва играене на лотария). На отдалечения компютър се стартира програма, която прави разни неща с този service, и накрая стартира зададената програма.
Това, което искам е, трафика за тоя service да минава през ssh -- заради криптирането и за да няма нужда отдалечения компютър да може да "вижда" близкия. Проблемът е, че не знам кои портове на отдалечения компютър са свободни, за да направя port forwarding. При интерактивна сесия с ssh потребителя може да добавя нови forwardings като влезе в команден режим (с ~C), обаче не ми е ясно как мога да направя това от програма.
Пробването на различни портове докато намеря накой свободен не е опция. Не играя на лотария :) По-скоро ще си напиша собствено ssh :)
Имам една програма, да кажем, че се казва cprog. Тя получава като аргументи име на отдалечен сървър (serv) и програма, която да стартира (cmd). Трябва да направи еквивалента на интерактивна сесия подобно на ssh -t serv cmd, но с едно допълнение. cprog стартира service, който е индивидуален за всяко стартирано копие. Service-а чака на произволен свободен локален порт (програмистите знаят как се прави, не включва играене на лотария). На отдалечения компютър се стартира програма, която прави разни неща с този service, и накрая стартира зададената програма.
Това, което искам е, трафика за тоя service да минава през ssh -- заради криптирането и за да няма нужда отдалечения компютър да може да "вижда" близкия. Проблемът е, че не знам кои портове на отдалечения компютър са свободни, за да направя port forwarding. При интерактивна сесия с ssh потребителя може да добавя нови forwardings като влезе в команден режим (с ~C), обаче не ми е ясно как мога да направя това от програма.
Пробването на различни портове докато намеря накой свободен не е опция. Не играя на лотария :) По-скоро ще си напиша собствено ssh :)