<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=zvhRN58oWnKKkMMw8SBR3AWQxpEq">blaze-ssh</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=zvhRN58oWnKKkMMw8SBR3AWQxpEq">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zvhRN58oWnKKkMMw8SBR3AWQxpEq&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zvhRN58oWnKKkMMw8SBR3AWQxpEq&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zvhRN58oWnKKkMMw8SBR3AWQxpEq&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zvhRN58oWnKKkMMw8SBR3AWQxpEq&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        

    <div class="list-group">
    <div class="list-group-item">
    <div style="font-size:1.3rem;">blaze-ssh</div>
    <div class="repo-item">A Configurable CLI tool that helps you SSH into AWS EC2 instances without leaving the terminal</div>
    <div>rad:zvhRN58oWnKKkMMw8SBR3AWQxpEq</div>
    </div>
    <div class="list-group-item">
    <div>Visibility</div>
    <div class="repo-item">public</div>
    </div>
    <div class="list-group-item">
    <div>Delegates</div><div class="repo-item">did:key:z6MkpfmnpPus4ALzTL3yA1Ldkjvmwbe3NCyTNgVJQnN64rht</div>
    </div>
    <div class="list-group-item">
    <div>Default branch</div>
    <div><span class="repo-item">main &#8594 12979ec33a4803241c26b47ef7958d2a35a4b4ee</span> (Wed Apr  2 12:06:07 2025)</div>
    </div>
    <div class="list-group-item">
    <div>Threshold</div>
    <div class="repo-item">1</div>
    </div>
    </div>
    
        <div class="list-group mt-3">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-book"></i> README.md</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;">&lt;h1 align=&quot;center&quot;&gt;Blaze SSH&lt;/h1&gt;
&lt;div align=&quot;center&quot;&gt;
  &lt;img src=&quot;https://github.com/sreedevk/blaze-ssh/assets/36154121/074b4d46-167c-4e66-807f-9cc3c730d1f1&quot; width=&quot;200&quot; /&gt;
&lt;/div&gt;

## Description
Blaze SSH is a configurable CLI tool that helps you ssh into amazon aws ec2 instances without leaving your terminal.
It is build with Rust and uses the official AWS SDK for Rust.
configuration is done using a `.toml` file (`&quot;~/.config/blaze/config.toml&quot;` by default).

## Motivation
I have been using [aws-ssh](https://github.com/sreedevk/aws-ssh) for a while now. Its a great tool but with all of the dependencies like fzf, jq, aws-cli etc., It has been difficult to come up with an effective way to package the application into an easily installable format. Also as someone that enjoys experimenting with with new shells, its inconvenient to have to switch back to zsh just to be able to use aws-ssh.

This tool attempts to solve the problem by keeping the dependencies at a minimum and using Rust to build a single executable binary.
A few conveniences of aws-ssh are missing, but will be added soon along with some additional features like aws-ecs support.

## Installation

```bash
$ cargo install blaze-ssh --git https://github.com/sreedevk/blaze-ssh
```

After installation, make sure to create a config file at `~/.config/blaze/config.toml`. See [Configuration](#configuration) for more details.
You may use the `configure` command to generate a default config file.

```bash
$ blssh configure
```

## Usage
```bash
Usage: blssh [OPTIONS] &lt;COMMAND&gt;

Commands:
  connect    connect to an ec2 instances
  list       list filtered ec2 instances
  print      Print SSH Command
  configure  generate default config (~/.config/blssh/config.toml)
  help       Print this message or the help of the given subcommand(s)

Options:
      --no-cache         disable using cached ec2 instances list
  -c, --config &lt;CONFIG&gt;  config
  -h, --help             Print help

# Connection Opts
Usage: blssh connect [OPTIONS] [SEARCH]

Arguments:
  [SEARCH]  Search String to filter instances by

Options:
  -u, --user &lt;USER&gt;                  ssh username
  -p, --port &lt;PORT&gt;                  ssh port
  -k, --key &lt;KEY&gt;                    ssh private key
  -a, --address-type &lt;ADDRESS_TYPE&gt;
  -j, --jumphost &lt;JUMPHOST&gt;          jumphost
  -h, --help                         Print help
```

## Configuration
Currently, blaze-ssh expects to find a config file at `~/.config/blaze/config.toml`. Please make sure to create this file. 

```toml
[config]
private-key = &quot;~/.ssh/id_rsa.pem&quot;
default-user = &quot;ec2-user&quot;
jumphost = &quot;&quot;
port = 22
address-type = &quot;private&quot;
```

## Examples

### Listing Instances

```bash
# Lists all instances that contain the term &quot;staging&quot; in their &quot;Name&quot; tag
$ blssh list staging
```

### Connecting to an Instance
```bash
# Interactively select an instance to connect to from a list of instances that contain the term &quot;production-1&quot; in their &quot;Name&quot; tag
$ blssh connect production-1

# Connecting with a non default (configured in ~/.config/blaze/config.toml) private key
$ blssh connect production-1 --key ~/.ssh/production.pem

# Connecting with a non default (configured in ~/.config/blaze/config.toml) user
$ blssh connect production-1 --user ubuntu

# Connecting with a non default (configured in ~/.config/blaze/config.toml) port
$ blssh connect production-1 --port 2222

# Connecting with a non default jumphost host
$ blssh connect production-1 --jumphost &quot;user@192.168.1.1&quot;

# Connecting with a non default (configured in ~/.config/blaze/config.toml) address type
# Options are &quot;public&quot; &amp; &quot;private&quot;
$ blssh connect production-1 --address-type public

# Connect using a custom config
$ blssh --config ~/custom-config.toml connect production-1

# Disable use of cached instance information (stored in /tmp/blaze_ssh_cache.json)
$ blssh --no-cache connect production-1
```
### Printing The SSH Command to Connect to an Instance

```bash
$ blssh print production-1
```

# Known Issues
1. When navigating using j/k on the connect ui, the list scroll doesn&#x27;t work. [PR #2]
2. The behavior without a config file is untested.

# Roadmap
1. Fix known Issues
2. Package application for distribution
3. If only one instance is found, connect to it directly without showing the connect ui [PR #1](https://github.com/sreedevk/blaze-ssh/pull/1)
4. Add scp support to copy files to/from instances
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

