reverse ssh tunnel

ხშირად ხდება ხოლმე როცა კომპიუტერი ნატის ქვეშ არის და ssh ზე გვინდა დაკავშირება ყველაფერი მარტივია როცა Port Forwarding შეგვიძლია, მაგრამ რა უნდა ვქნათ მაშინ, როცა პორტები არ არის დაფორვარდებული ან კომპიუტერი იმყოფება ფაირვოლის უკან? სწორედ აქ შეგვიძლია გამოვიყენოთ reverse ssh ანუ სახელიდან გამომდინარე მარტივად რომ ვთქვათ ქონექშენის ინიციატორი ვართ არა ჩვენ არამედ Remote კომპიუტერი.

მოკლედ თუ  შეგვიძლია კონტაქტზე გავიდეტ office pc დან home pc ზე რომელიმე პორტზე ჩვენ გვექნება შესაძლებლობა ამ აწეულ ლინკში Home Pc დან უკან office pc სკენ გავატაროთ ტრაფიკი.

ესეთი სქემის გაკეთება შეგვიძლია ssh ით:

ssh -R 2210:localhost:22 homepc@xx.xx.xx.xx – ამას ვაკეთებთ office pc ზე და ხდება ზუსტად ის მოქმედება რაც სურათზე არის ასახული მწვანე ხაზით. -R პარამეტრი ნიშნავს reverse ს 2210 არის ის პორტი რასაც მოუსმენს home pc და ყველა ქონექშენი რაც მოვა ამ პორტზე გადაფორვარდდება Office Pc ის 22 ე პორტზრე. ამ ყველაფრის შემდეგ თუ შევალთ Home Pc ზე და დავწერთ ssh -p 2210 localhost აღმოვჩნდებით ფაირვოლის უკან მყოფ ოფისის კომპიუტერზე.  ეს არის პრინციპი reverse ssh ტუნელის. ეხლა ვნახოთ უფრო დახვეწილი მაგალითები თუ როგორ შეგვიძლია გამოვიყენოთ ეს ყველაფერი.  წარმოვიდგინოთ რომ home Pc არ არის ყოველთვის ჩართული ან კიდე გვინდა რომ Office pc  სხვადასხვა ადგილიდან დავუკავშირდეთ ხოლმე. ამისთვის არის საკმაოდ კარგი გამოსავალი იმ შემთხვევაში თუ კიდევ მესამე კომპიუტერი არსებობს მას მივცემთ middle man ის როლს (ანუ იქნება შუამავალი)  მოკლედ სურათზე უკეთ ჩანს ყველაფერი:

სურათზე მოცემული სქემის განსახორციელებლად Office pc ზე ვაკეთებთ ასე:
ssh -R 2210:localhost:22 server@xx.xx.xx.xx შემდეგ იგივენაირად ნებისმიერი ადგილიდან შევდივართ სერვერზე და ვწერთ იგივეს რაც ზევითა მაგალითში: ssh -p 2210 localhost და რათქმაუნდა თავს ამოვყოფთ Office pc ში.

ცოტა არ იყოს მოსაბეზრებელია Middle server ზე ssh ით შესვლა და მერე კიდე იქიდან ბრძანების გაშვება. მოკლედ ssh ტუნელი მარტო ბინდავს ლოკალჰოსტს დეფაულტად სხვა ინტერფეისებსაც რომ მოუსმინოს ამისათვის საჭიროა GatewayPorts on ამ პაარამეტრის დამატება ssh ში.

ssh -R xx.xx.xx.xx:2210:localhost:22 user@middleman  აი ამ ბრძანებით კონკრეტული აიპი შეგვიძლია დავბინდოთ, თუ არ მივუთითებთ აიპის მაშინ ყველა ინტერფეისს მოუსმენს როდესაც ჩართულია პარამეტრი GatewayPorts on ssh ში.  რახან უკვე შეგვიძლია 2210 პორტი მოვასმენინოთ public Ip ზე აღარ არის საჭირო middle man ზე შესვლა და შემდეგ ტუნელის აწევა:

ssh -p 2210 user@middleman  სულ ეს არის

კიდევ ერთი მაგარი რაღაცა რაც შესაძლებელია reverse ssh ით გაკეთდეს. მაგალითად თუ გვაქვს ფაირვოლის უკან პრინტერი ან რამე სხვა კომპიუტერი სადაც აქსესი აქვს მხოლოდ office pc ის შეგვიძლია გავაკეთოთ ესეთი რაღაცა:
ssh -R xx.xx.xx.xx:2211:192.168.0.5:21 user@middleman
ssh -R [bind_address:]port:host:hostport და გვექნება ესეთი სქემა:

საქმის გასალამაზებლად შეგვიძლია გამოვიყენოთ f და N პარამეტრი f ი უშვებს ბეგრაუნდში და N ი მიუთითებს რომ არ გვინდა ბრძანების შესრულება Remote ჰოსტზე, ანუ:

ssh -N -f -R [bind_address:]port:host:hostport
ssh -N -f -R xx.xx.xx.xx:2211:192.168.0.5:21

იდეები:   შეგვიძლია გავაკეთოთ ცენტრარიზებული Middle Man სადაც ბევრ კომპზე იქნება ტუნელი და ჩერეზ იქიდან დავუკავშირდებით ჰოსტებს. დამატებით შეიძლება სკრიპტების გაშვება თუ ინტერნეტი გაითიშება ავტომატურად ახლიდან გააკეთოს ტუნელი, მარა ცუდი მხარეც არის წარმოიდგინე რა მოხდება თუ ვინმე middle man ზე მოახერხებს შესვლას ?

Link #1 #2 #3 #4 #5

Some other stuff you might find it is useful: RSTunnel autossh sslh  #2 

case-insensitive search inside vim

vim, by default, searches case sensitively. If you search for apple, you will find exactly that, but not Apple or APPLE.

In most situations, I want my searches to be case insensitive. To make search case sensitive, set the corresponding vimoption by typing :set ignorecase (and press the return key).

ignorecase has a shorter alias called ic. You can type :set icand it will have the same effect.

Now searching for apple will give you Apple, APPLE as well as apple.

But, what about the situations where you DO want case-sensitive searching?

You can always disable the ignorecase search, by typing the following and hit return:
:set noignorecase

Flipping between ignorecase and ignorecase can be tiresome for even the most patient. Luckily, vim has the smartcaseoption that you can use TOGETHER with ignorecase.

Type the following:
:set ignorecase (and hit return)
:set smartcase (and hit return)

With both ignorecase and smartcase turned on, a search is case-insensitive if you enter the search string in ALL lower case. For example, searching for apple will find Apple and APPLE.

However, if your search string has one or more characters in upper case, it will assume that you want a case-sensitive search. So, searching for Apple will only give you Apple but not apple or APPLE. It turns out to be quite satisfactory for most people (including yours truly).

While we are on the topic of vim search options, there is a third option that you should know:
:set incsearch (and hit return)

incsearch stands for incremental search. It means that you will see what vim matches as you type in each letter of your search string (without having to hit return before search is even attempted).

For example, you type / to initiate search, and right after you type the letter a, vim will highlight the a in apple. As you type the next letter p, vim will highlight ap in the word apple.

You can often find what you are looking for before you finish typing in the entire search string. It is also helpful if you are not quite sure of what you are searching for, and depending on the instant feedback as you type, you can make corrections to the search string by backspacing.

If you want to enable those options permanently, insert the following lines into your ~/.vimrc file.
set ignorecase
set smartcase
set incsearch

Happy searching!

Source #1 #2

hidden gnome fish

  1. Open the Run Application dialog (Alt + F2)
  2. Enter “free the fish” (without the quotes)
  3. Press Enter

Another way to invoke it:

  1. Right-click your Gnome panel
  2. Click About Panels
  3. Press the “F” key three times

And another easter egg (really lame, but this one is easy to quit):

  1. Open the Run Application dialog (Alt + F2)
  2. Enter “gegls from outer space” (without the quotes)
  3. Press Enter