I need a tool which allows to take controll of user keyboard and/or mouse with support of Linux client (preferably on FLOSS license). It should ask the user about permission (I don't want to give a free troyan crackers). The NAT is not a problem - I have VPN. It should be able to work with lower resolution on client.
Windows is Vista (both 32 and 64 bit editions).
Does anyone know such client?
(By client I mean the connecting computer and by server I mean the Windows machine).
VNC. Many of the other products will not have great support for Linux as the client.
I would generally recommend against VNC in a corporate environment. If you're providing support for friends/family or for small mom & pop shops it may be fine. However, most versions of VNC store the password to connect in an easily decryptable form in a known place in the registry for a Windows system. So auditors jump on it. Some of the VNC solutions, like UltraVNC, can do domain authentication (and you should if that's an option). The other issue is that not all VNC products encrypt the session. UltraVNC can, because we used to do so using the AES plug-in.
At the helpdesk at my university, we use a commercial product called Bomgar. Though it is far from free, Bomgar does have support for Windows, Mac, and Linux in the Representative Console as well as the client and even has a number of diagnostic features (e.g. a process listing). We haven't had any trouble going through NAT, since the client application contacts an intermediary server. In our specific implementation, we do not take control of the user's computer, though I believe Bomgar does support that feature.
I am sure Joel would like to add Copilot to the list. I have just paid $5 to help my brother in law get his iphone working on his home wireless, so I can say it works well, at least with helping the family out.
However if linux is the client then this may not be for you as the listed set of OS's it supports is MacOs and Windows. I guess you will have to have a VPN/tunnel set up and use VNC.
I prefer to use Teamviewer. It's free for "non-commercial" use. It requires no installation for remote support. Can work via local area connection or through http. Works just as VNC does, but gives you the capability to drive anyone's machine from just about anywhere in the world with no worries of network configuration.
CrossLoop is a free VNC wrapper that I have used and works well for remote tech support. Similar idea to CoPilot, but free.
http://www.crossloop.com/
rdesktop is a linux based client that hooks into remote desktop.
http://www.cyberciti.biz/tips/linux-remote-desktop-for-controlling-windows-xp-desktop.html
VNC or commerical offerings (GoToAssist etc.) probably is your best bet. They usually always ask permission from the remote user before allowing connection to continue. Just note that with VNC there's several variants and from those UltraVNC seems popular. These variants also have differing levels of screen compression so you should really compare which is the best for your case as VPN connection (over Internet) tends to introduce lot of latency and that combined with narrow bandwidth can really make experience more difficult than it needs to.
Rdesktop (or connecting with regular RDP methods) isn't really suitable if you want to do screen-sharing as logging on to the remote machine requires a) entering user's credentials (which for security reasons you should never ask from the user) and b) it locks the local desktop when you are connected to (unless it's Windows Server OS).
For me VNC just doesn't have the necessary features available to easily support users. We use a product called Dameware for remote support (within our network only) and it works great. It only runs on Windows however.
I am relatively happy running Windows in a virtual machine on my Linux workstation so I can use Dameware and many other Windows only tools to support end users.