SSH in clojure. Uses jsch. Provides a ssh function that tries to look similar to clojure.contrib.shell/sh.
The top level namespace is clj-ssh.ssh
(use 'clj-ssh)
There is a simple ssh
function, which by default, will try and use a id_rsa
key in your $HOME/.ssh directory.
(ssh "hostname" "ls")
Strict host key checking can be turned off.
(default-session-options {:strict-host-key-checking :no})
More advance usage is possible.
(with-ssh-agent []
(add-identity "/user/name/.ssh/id_dsa")
(let [session (session "localhost" :strict-host-key-checking :no)]
(with-connection session
(let [result (ssh session :in "echo hello" :result-map true)]
(println (result :out)))
(let [result (ssh session "/bin/bash" "-c" "ls" "/")]
(println (second result))))))
SFTP is supported, both with a simple interface,
(sftp "hostname" :put "/from/this/path" "to/this/path")
as well as more advanced usage.
(with-ssh-agent []
(let [session (session "localhost" :strict-host-key-checking :no)]
(with-connection session
(let [channel (ssh-sftp session)]
(with-connection channel
(sftp channel :cd "/remote/path")
(sftp channel :put "/some/file" "filename"))))))
Note that any sftp commands that change the state of the sftp session (such as cd) do not work with the simplified interface, as a new session is created each time.
Via maven and the clojars, or Leiningen.
Licensed under EPL
port forwarding environment setup sftp scp
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close