SwiftSH
A Swift SSH framework that wraps libssh2.
Features:
- Thread-safety
- SSH shell
- SSH command
- SCP
- SFTP
- Tests
- Documentation
📦 Installation
CocoaPods
CocoaPods is the dependency manager for Swift and Objective-C Cocoa projects. It has over ten thousand libraries and can help you scale your projects elegantly.
Add this to your Podfile:
use_frameworks!
pod 'SwiftSH'
Carthage
Carthage builds your dependencies and provides you with binary frameworks, but you retain full control over your project structure and setup.
Add this to your Cartfile:
github "Frugghi/SwiftSH"
📖 Documentation
The API documentation is available here.
💻 Usage
Import the framework:
import SwiftSH
Execute a SSH command:
let command = Command(host: "localhost", port: 22)
// ...
command.connect()
.authenticate(.byPassword(username: "username", password: "password"))
.execute(command) { (command, result: String?, error) in
if let result = result {
print("\(result)")
} else {
print("ERROR: \(error)")
}
}
Open a SSH shell:
let shell = Shell(host: "localhost", port: 22)
// ...
shell.withCallback { (string: String?, error: String?) in
print("\(string ?? error!)")
}
.connect()
.authenticate(.byPassword(username: "username", password: "password"))
.open { (error) in
if let error = error {
print("\(error)")
}
}
// ...
shell.write("ls -lA") { (error) in
if let error = error {
print("\(error)")
}
}
// ...
shell.disconnect()
⚠️ OpenSSL and Libssh2 binaries
SwiftSH includes precompiled binaries of Libssh2 and OpenSSL generated with this script. For security reasons, you are strongly encouraged to recompile the libraries and replace the binaries.
📄 License
SwiftSH is released under the MIT license. See LICENSE for details.