Cygwin with some kind of keyring - cygwin

It would be nice to only have to type my SSH key passphrase once, as it works on Mac OSX. Per session at least. This would ease my programming related (!) tasks :)
Could this be done somehow?

See Keychain, a bash script developed by Gentoo. See also drobbin's intro to Keychain, with a download link.

Related

Making bash on ungraphical debian look neat and tidy, like when sshing to it

OH GOD I'M SUCH A NOOB
wait let me explain this.
I am somewhat familiar with linux, and i own a raspberry pi which i use as a ssh server, but i recently got hold on a old Dell Precision M4300 Laptop, so i got a minimal debian installation on that as well.
Howerver, as i logged in directly (as using the display and keyboard on the machine) to the laptop, i discovered a strange thing:
When executing a command resulting in a new menu, for example
nano .bashrc
, and than exiting that menu, the output gets shown where previously only the list of typed in commands and outputs was. This seems somewhat logical, as the "menue" is a "command output" as well, but when sshing to the machine from my windows machine (via gygwin or putty), the "menue" closes and i see the list of prompts and command outputs again, the same happens when sshing to the raspi. Is this a speciality of Putty / Cygwin? Can i make bash on the machine clean up after nano?
Thanks for any replys, i am really out of ideas here, i don't even know the right search term...
The functionality you are talking about is implemented by smcup and rmcup which can be used by editors such as nano and other applications to save and restore the screen when they are invoked and exited. This functionality is known as alternate screen and you can find more documentation regarding it here. Some people actually are quite annoyed by it.
Unfortunately, if you're using the linux virtual console instead of X windows or even connecting into the machine via ssh from another computer, then it seems like this feature is not available, according to this other post.

rcp Vs rsync prompting for password

This might be a repeat question but exact explanation I am not getting. I am new to LINUX environment.
I was trying to copy files from one system to other system. If I issue rcp command it copies without asking for password but if I issue rsync command then it asking for permission. Can you please explain why?
rcp is an ancient and insecure program for copying files between remote machines. Avoid it. scp (of the ssh suite) is the secure, modern alternative.
rsync is a relatively recent program. When connecting remotely, it uses ssh in the background which, being secure, is what is asking for credentials.

FTP GUI client for Unix-like platform capable of TLS/SSL/SFTP

I know similar questions were already asked and answered, but not exactly the same.
I'm looking for a FTP client that can do TLS/SSL connection and SFTP aswell on Linux with a nice GUI. This is main requirement, though tabbed session are a plus.
FTPRush is my idol for FTP-ing on Windows, something similar on linux would be a rockstar.
Filezilla? http://filezilla-project.org/
If you use Gnome, then I'd recommend just using Nautilus. It will do at SFTP and FTP, I'm not sure about FTP with SSL. It will also do tabs.
Konqueror can do SFTP as well as ftp over ssh.
FireFTP firefox extension.
Try CrossFTP
Wikipedia shows ( that table ) with "Information about what internet protocols the clients support" and (another one) with "The operating systems the clients can run on."
Just merge it!
HTH and Good luck!
gFTP should do as well
http://www.iglooftp.com/unix/
A couple of possibles.
Kasablanca - KDE based.
http://kasablanca.berlios.de
Another one. Igloo ftp
http://www.iglooftp.com/unix/
Not sure if you can do this but maybe run FTPRush in WINE? Just a thought
I've had this same problem so I can safely say that you probably won't find the silver bullet you are looking for. The FTP clients currently available on Linux just don't compare to some of the Windows clients. Having searched and searched I had to settle with gFTP and FileZilla. However there is another that is decent which hasn't been mentioned yet: FireFTP. It is an extension to Firefox so that in itself has it's own set of pro's and con's.
Before you give up though, you should test drive CrossOver and use it to install FTPRush and see if it works. It's at least worth a try.
Also gigolo works to do that. It's very useful when nautilus is not available (i.e. when using Linux with LXDE). Gigolo establish connection and later with a file manager is possible open as a local folder.

What programming languages can I code and compile from my USB flash drive?

I like to program at my college's computer labs (a Windows environment). Unfortunately, the labs have IDEs & compilers for classes being taught that particular semester, which usually comes down to C, C++, and Java. I'm at a point where it's good for me to play around with a lot of different languages. I'd like to be able to do with from my flash drive.
I am also considering scripting languages (like portable Python) or languages/frameworks/runtimes that may require other programs (PHP needs a whole web stack).
What languages and tools can I use (scripted is OK!) to code and compile without having to install anything on the lab computers, and can be run from and saved on a USB flash drive?
Anything that runs on any operating system...
Qualification: the QEMU virtualizer is a fairly typical sort of PC emulator with the very unique feature that it can run without the help of an installer to set up it's environment. Thus you can create a VM image on your USB drive with the programming tools of your choice, for the operating system of your choice, and along side that, the QEMU executable, and you're set.
That said, the Windows port of QEMU appears to be abandoned, and its latest, 0.9.1, is dog slow.
You might be able to get another emulator with better performance to work, but this isn't supported out of the box, as far as i'm aware.
This kind of setup has some advantages, since the environment you'll be running is really your own, no matter which computer you happen to be sitting in front of.
you can try Portable Python.
Javascript. Works everywhere with a browser and a text editor (in your case, Notepad).
You can run XAMPP from a USB flash drive. And if you need an IDE, you can put eclipse on your flash drive, too.
Have you looked at DevC++ Portable? Also, Portable Python plus a portable editor like Notepad++ will give you a fairly sweet setup.
Eclipse is nice because it requires no install - just copy the eclipse directory to wherever you want it. If java is too boring for you, install the scala plugin and blow your mind away.
Any language can be done provided you can fit your libraries and compiler (or interpreter) on it.
Quick Basic works off of a flash drive...
Strawberry Perl Portable will give you Perl.
You can program Tcl/Tk by installing the single file distribution called "tclkit". You can even put tclkits for multiple platforms on a single drive so you can develop on windows, the mac or most unix boxes from the same drive.
For each platform there's nothing to install but the single executable to get a full implementation of tcl/tk including all of the GUI components.
AutoHotkey is good for windows.
emacs with its elisp is portable as well.
Clojure is impressively portable, it just requires a JVM (which your college machines should have, since you mention they're used for Java development)
Go to the downloads, get the latest release (currently 1.0.0), extract it and run from the command line:
java -cp clojure-1.0.0.jar clojure.lang.Repl
..and you'll get dropped to the Clojure REPL.
You can run a script, saved as a text file (named myscript.clj) with:
java -cp clojure-1.0.0.jar clojure.main myscript.clj
You can use Groovy. Works using JVM ...

Remotely Programming

I'm doing my development work on my Windows machine, but my compiling on a remote Linux machine. What I currently do is start an X server on Windows, ssh into the Linux machine, then do the development remotely.
What I'd like to do is edit my source on the Windows machine, and have it automatically copy files over to the Linux system when I save. I'd also like for my built-in compilation commands to perform a build on the remote system.
If it makes a difference, the source is all in C, using GCC. In descending order of preference, I have Emacs, Vi, and Netbeans on my desktop, and am willing to install another IDE for a last resort.
This is certainly doable in vim. You can use the scp:// protocol within vim to edit remote files, and set up a command that writes a local copy. You can also change what program vim uses for :make to do an ssh make instead on your server.
You'll need to set up your ssh-keys to keep this painless (otherwise you'll be entering your password all the time) but that's fairly easy.
Another alternative would be to push to a remote repos as part of your make command, instead of editing remotely.
EDIT:
First, using the scp:// protocol within vim. From :help netrw-start (or down the page from :help scp)
Netrw supports "transparent" editing of files on other machines using urls
(see |netrw-transparent|). As an example of this, let's assume you have an
account on some other machine; if you can use scp, try:
vim scp://hostname/path/to/file
Want to make ssh/scp easier to use? Check out |netrw-ssh-hack|!
You can also use scp:// paths in :edit commands, or really anywhere that you could use a normal path.
And, from the mentioned :help netrw-ssh-hack, instructions on how to set up your ssh keys:
IMPROVING BROWSING *netrw-listhack* *netrw-ssh-hack* {{{2
Especially with the remote directory browser, constantly entering the password
is tedious.
For Linux/Unix systems, the book "Linux Server Hacks - 100 industrial strength
tips & tools" by Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gives a tip
for setting up no-password ssh and scp and discusses associated security
issues. It used to be available at http://hacks.oreilly.com/pub/h/66 ,
but apparently that address is now being redirected to some "hackzine".
I'll attempt a summary based on that article and on a communication from
Ben Schmidt:
(1) Generate a public/private key pair on the local machine
(ssh client):
ssh-keygen -t rsa
(saving the file in ~/.ssh/id_rsa as prompted)
(2) Just hit the when asked for passphrase (twice) for no
passphrase. If you do use a passphrase, you will also need to use
ssh-agent so you only have to type the passphrase once per session.
If you don't use a passphrase, simply logging onto your local
computer or getting access to the keyfile in any way will suffice
to access any ssh servers which have that key authorized for login.
(3) This creates two files:
~/.ssh/id\_rsa
~/.ssh/id\_rsa.pub
(4) On the target machine (ssh server):
cd
mkdir -p .ssh
chmod 0700 .ssh
(5) On your local machine (ssh client): (one line)
ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys2' < ~/.ssh/id_rsa.pub
or, for OpenSSH, (one line)
ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys' < ~/.ssh/id_rsa.pub
You can test it out with
ssh {serverhostname}
and you should be log onto the server machine without further need to type
anything.
If you decided to use a passphrase, do:
ssh-agent $SHELL
ssh-add
ssh {serverhostname}
You will be prompted for your key passphrase when you use ssh-add, but not
subsequently when you use ssh. For use with vim, you can use
ssh-agent vim
and, when next within vim, use
:!ssh-add
Alternatively, you can apply ssh-agent to the terminal you're planning on
running vim in:
ssh-agent xterm &
and do ssh-add whenever you need.
For Windows, folks on the vim mailing list have mentioned that Pageant helps
with avoiding the constant need to enter the password.
Kingston Fung wrote about another way to avoid constantly needing to enter
passwords:
In order to avoid the need to type in the password for scp each time, you
provide a hack in the docs to set up a non password ssh account. I found a
better way to do that: I can use a regular ssh account which uses a
password to access the material without the need to key-in the password
each time. It's good for security and convenience. I tried ssh public key
authorization + ssh-agent, implementing this, and it works! Here are two
links with instructions:
http://www.ibm.com/developerworks/library/l-keyc2/
http://sial.org/howto/openssh/publickey-auth/
For making on remote systems, you need to set your makeprg variable to
do an ssh make. From :help makeprg
Program to use for the ":make" command. See |:make_makeprg|.
This option may contain '%' and '#' characters, which are expanded to
the current and alternate file name. |:_%| |:_#|
Environment variables are expanded |:set_env|. See |option-backslash|
about including spaces and backslashes.
Note that a '|' must be escaped twice: once for ":set" and once for
the interpretation of a command. When you use a filter called
"myfilter" do it like this:
:set makeprg=gmake\ \\\|\ myfilter
The placeholder "$*" can be given (even multiple times) to specify
where the arguments will be included, for example:
:set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
One option is to use the TRAMP remote-editing package (built into Emacs 22 and newer, and you can install it into older versions). Every time you save your file, Emacs sends its contents over ssh (by default; of course every detail is totally configurable) to the Linux machine. Commands like M-x compile and M-x grep are TRAMP-aware and execute on the remote host.
I would look into continuous integration for your environment. This way you can commit the changes to source control, and have the linux box act as a build server. You can have tests associated and other related interesting stuff you want to be run on the builds.
Update 1: Also this might work for you: http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html (it is also worth a try doing some searches on similar tools)
Other have suggested SAMBA which may not be feasible on your Linux box. A good alternative is to use Dokan SSHFS on your Windows box to mount a remote directory over SSH.
You could try sharing a disk between your Linux and Windows machines using Samba or something like that. Then you could edit on your local machines and the files would be visible immediately on the remote machine since the drive would be visible to both.
Where I work we have all files on NFS that is accessible from all Linux machines and Windows machines. I don't know how hard it is to set that up since I work in a large corporation and IT is abstracted away from me, but simple disk sharing should be pretty straightforward.
Why do you start an X server on Windows? Personally, I would set up a Linux VM with VMware or whatever your favorite VM technology is (VMware is free and works well). Then choose any Linux distribution you want. You just need very basic functions, mostly the standard "toolchain." You could pick Centos, Ubuntu, Fedora, Debian, whatever. I usually use Centos or Debian. Set it up, and just use PuTTY into your VM. From there, you can scp files to your remote server and so forth. This way you don't have to bother with cygwin or an X server or any of that.
Can you just use a samba share to save the files directly on the remote machine? I often do PHP this way.
Then just have a putty window open to run commands on the remote box.
Or am I missing something?
Set a source control system and use it. Then you can just make a commit after saving in your IDE, and on server you can have something happening on-commit.
This can trigger tests, build, mail any errors to you...
One solution might be to have some sort of polling app that checks the timestamp on the files to see if they have changed. If they have then get it to save and then compile. Kinda hackish this way but it would be workable.
I personally use XMing with PuTTY. I ssh using PuTTY while XMing is running. I can open up any editor (gvim, emacs, gedit, etc) and it will appear.
You will need to do some setup on PuTTY though:
Expand Connection
Expand SSH
Click on X11
Check the "Enable X11 Forwarding"
In the text field for display location, enter (without quotes): "localhost:0"
Save session and connect.

Resources