Monday, December 26, 2011

Jenkins Now Acts as an SSH Daemon

Starting in the upcoming Jenkins 1.446, Jenkins speaks the server-side of the SSH protocol. I think this is exciting, and here is why.

For quite some time now, there is Jenkins CLI, which lets you access Jenkins from the command line by using a custom client JAR file. There are several dozen commands available (that you can check by visiting http://server/jenkins/cli), ranging from creating a job to shutting down Jenkins. These CLIs are often a lot more scriptable than HTTP interfaces, and so they are often used by other programs to interact with Jenkins.

Jenkins 1.446 exposes a large subset of these commands through SSH, making it even easier to access this functionality. You no longer need any special client JAR nor Java VM to talk to Jenkins. All you need is a stock SSH client. As I explained earlier, Jenkins lets you register your SSH public keys, and that is how you authenticate.

As always, the server side of this is extensible. Plugins can define additional commands to be exposed via SSH, which is a great building block for more sophisticated integrations. This is particularly so because SSH is a standard transport protocol for many tools, such as Git, Subversion and so on. I'm planning to write a few plugins that take advantage of this in the coming days.

This Wiki article talks more about the details, including how you can discover the endpoint, how you can verify the server key, and so on.

(And no, this is not about making Jenkins a general-purpose SSH server that you can use to login to the server!)
--Kohsuke Kawaguchi, Jenkins CI Founder, Elite Developer at CloudBees

Follow CloudBees:
Facebook Twitter

1 comment:

  1. Hi Kosuke,

    Jenkins is the best continues bulder at the internet and this sure is a nice start, however a major command is missing: to request the status of the latest and previous builds.