Home Assistant Community Add-on: SSH & Web Terminal

Is it just me or is there a line wrapping bug somewhere? If I try to type or paste a longish command it wraps and starts overlaying my initial characters?

Is it possible to disable ZSH as default shell? I donā€™t understand how to use it and so find it actually more difficult. No worries if not, itā€™s not a big deal.

I used to have my port set in the config to 22800. I noticed today that the add-on was not started. When I tried to start it, the log complained that port 22 was already in use (I have the normal ssh add-on as well). Looking at the docs, I see that there no longer is a ā€œportā€ setting in the config.json, but it has the normal port configuration that most add-ons have and it is set for port 22. Was this some kind of recent change? I turned off the other ssh add-on and it now starts and works.

You can still specify the port in the settingsā€¦ down below in the Network section. Itā€™s just mapping a different external port to port 22 in the container.

Right, so thatā€™s what I mean. That setting used to be in the json config portion, but now it looks like it was moved to the setting below that you are talking about which is the more standard way to set ports on add-ons. I just didnā€™t see that anywhere in the release notes and itā€™s kind of a big change.

I think i have done it the right way, i can see the folder Terminal but when i press it i get : 502: Bad Gateway

any ides?

I cannot figure out when this addon will not work. I have tried configuring every which way. Running HASSio in docker on an ubuntu server.

[cont-init.d] 10-requirements.sh: executing... 
[18:15:14-0500] TRACE ----> hass.config.has_value: username
[18:15:14-0500] TRACE ----> hass.jq.has_value: /data/options.json .username
[18:15:14-0500] TRACE ----> hass.jq: /data/options.json .username | if (. == {} or . == []) then empty else . end // empty
[18:15:14-0500] TRACE ----> hass.has_value: 
[18:15:14-0500] TRACE ----> hass.die: Setting a username is the mandatory!
[18:15:14-0500] TRACE ----> hass.has_value: Setting a username is the mandatory!
[18:15:14-0500] FATAL ----> Setting a username is the mandatory!
[cont-init.d] 10-requirements.sh: exited 1.
[cont-finish.d] executing container finish scripts...
[cont-finish.d] 99-message.sh: executing... 

It will work if I remove the hassio/addons/data/XXXX_ssh/ folder, but after I restart i get the error again.

Here is my config.json. I have tried a bunch of different usernames, combinations of !secret, plaintext values, and I cannot figure it out.

{
  "ssh": {
    "username": "!secret ssh_user",
    "password": "!secret ssh_password",
    "authorized_keys": [
      "!secret ssh_key"
    ],
    "sftp": false,
    "compatibility_mode": false,
    "allow_agent_forwarding": false,
    "allow_remote_port_forwarding": false,
    "allow_tcp_forwarding": false
  },
  "web": {
    "ssl": true,
    "certfile": "fullchain.pem",
    "keyfile": "privkey.pem"
  },
  "share_sessions": true,
  "packages": [],
  "init_commands": [],
  "log_level": "trace"
}

Where is requirements.sh located? Part of the hassio supervisor? Any help appreciated.

I removed SSH & Web Terminal after using it. It uninstalled, but I still see the Terminal ingress icon showing up on the left menu. Is there a way to get rid of this? Iā€™ve checked all my yaml files and canā€™t find anything related to it.

Restart Home Assistant.

That took care of it. Thanks!

Iā€™m moving my Hassio install from an RPi to a NUC. Iā€™ve got Hassio running on the NUC (in Docker on Ubuntu, using Frenckā€™s script) but this add-on wonā€™t install. My log shows

19-06-05 22:56:17 ERROR (SyncWorker_11) [hassio.docker.interface] Canā€™t install hassioaddons/ssh-amd64:5.0.2 -> 404 Client Error: Not Found (ā€œno such image: hassioaddons/ssh-amd64:5.0.2: No such image: hassioaddons/ssh-amd64:5.0.2ā€).

What am I doing wrong?

That usually means, disk full / not enough disk space.

:tada: Release v6.0.0

Full Changelog

This is a major release! With tons of updates on the internals.
Nevertheless, it should not contain any breaking changes for most of us.

:hammer: Changes

  • :arrow_up: Upgrades MariaDB client to 10.3.15-r0
  • :arrow_up: Updates yamllint to v1.16.0 (#80)
  • :arrow_up: Upgrades base image to v1.1.2
  • :arrow_up: Upgrades SQLite to 3.28.0-r0
  • :arrow_up: Upgrades vim to 8.1.1365-r0 (CVE-2019-12735)
  • :arrow_up: Switches base image to default base v4.0.0
  • :arrow_up: Upgrades cmake to 3.14.5-r0
  • :arrow_up: Upgrades docker to 18.09.6-r0
  • :arrow_up: Upgrades openssl-dev to 1.1.1c-r0
  • :arrow_up: Upgrades ack to 3.0.0-r0
  • :arrow_up: Upgrades awake to 1.0-r3
  • :arrow_up: Upgrades bind-tools to 9.14.1-r1
  • :arrow_up: Upgrades bluez to 5.50-r3
  • :arrow_up: Upgrades colordiff to 1.0.18-r1
  • :arrow_up: Upgrades device-mapper-libs to 2.02.184-r0
  • :arrow_up: Upgrades git to 2.22.0-r0
  • :arrow_up: Upgrades libltdl to 2.4.6-r6
  • :arrow_up: Upgrades libxml2-utils to 2.9.9-r2
  • :arrow_up: Upgrades mariadb-client to 10.3.16-r0
  • :arrow_up: Upgrades mosh to 1.3.2-r8
  • :arrow_up: Upgrades mosquitto-clients to 1.6.3-r0
  • :arrow_up: Upgrades nano to 4.3-r0
  • :arrow_up: Upgrades ncurses to 6.1_p20190518-r0
  • :arrow_up: Upgrades nginx to 1.16.0-r2
  • :arrow_up: Upgrades openssh to 8.0_p1-r0
  • :arrow_up: Upgrades openssl to 1.1.1c-r0
  • :arrow_up: Upgrades sudo to 1.8.27-r0
  • :arrow_up: Upgrades tmux to 2.9a-r0
  • :arrow_up: Upgrades zsh-autosuggestions to 0.6.1-r0
  • :arrow_up: Upgrades zsh to 5.7.1-r0
  • :sparkles: Adds Python from Alpine
  • :hammer: Removes ssl now deprecated ssl directive
  • :fire: Removes dropped tmux config directives
  • :arrow_up: Upgrades add-on base image to v4.0.1
  • :pencil2: Maintaince -> Maintenance
  • :sparkles: Adds FUNDING.yml
  • :arrow_up: Upgrades ttyd to 1.5.

Questions? Join our Discord server! https://discord.me/hassioaddons
Enjoying my add-ons? Consider supporting my work: https://patreon.com/frenck

:tada: Release v6.1.0

Full Changelog

This release adds the NetworkManager to the add-on by default (nmcli),
allowing you to configure WiFi & Network properties straight from the add-on.

Please note: Protection mode needs to be disabled in order for this to work.

:hammer: Changes

  • :arrow_up: Upgrades bind-tools to 9.14.3-r0
  • :sparkles: Adds networkmanager

Questions? Join our Discord server! https://discord.me/hassioaddons
Enjoying my add-ons? Consider supporting my work: https://patreon.com/frenck

Does it mean I can now setup a fixed up? I am using HassOs, loaded on my esxiā€¦ So no USB stickā€¦
Can someone explain how to configure up settings?

You can execute nmcli in the terminal as you would on any other linux distro

Thnx gonna try it out

:tada: Release v6.2.0

Full Changelog

This release contains mainly general maintenance, but contains one nice little feature:
Your .gitignore file is now persistent across reboots :tada:

:hammer: Changes

  • :arrow_up: Upgrades add-on base image to v4.0.2
  • :arrow_up: Upgrades docker to 18.09.8-r0
  • :racehorse: Improves build speed by leveraging the Home Assistant Wheels server
  • :sparkles: Adds support for persistent .gitconfig
  • :ambulance: Fixes linking issue with .gitconfig persistence

Questions? Join our Discord server! https://discord.me/hassioaddons
Enjoying my add-ons? Consider supporting my work: https://patreon.com/frenck

Donā€™t know what is going on but itā€™s failing to start now unless I disable the mapping to port 7681 - it says that the port is in use. Also ingress is giving me a NGINX 502 bad gateway error. Was working prior to upgrade.

2019/07/21 12:54:41 [crit] 688#688: *1 connect() to unix:/var/run/ttyd.sock failed (2: No such file or directory) while connecting to upstream, client: 172.30.32.2, server: a0d7b954-ssh, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/ttyd.sock:/", host: "xxxxxxxx.duckdns.org", referrer: "https://xxxxxx.duckdns.org/a0d7b954_ssh"
[21/Jul/2019:12:54:41 +1000] 502 ipv6addr, 127.0.0.1, 172.30.32.1(172.30.32.2) GET / HTTP/1.1 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36)
2019/07/21 12:56:06 [crit] 688#688: *3 connect() to unix:/var/run/ttyd.sock failed (2: No such file or directory) while connecting to upstream, client: 172.30.32.2, server: a0d7b954-ssh, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/ttyd.sock:/", host: "xxxxxx.duckdns.org", referrer: "https://xxxxxx.duckdns.org/a0d7b954_ssh"
[21/Jul/2019:12:56:06 +1000] 502 ipv6addr, 127.0.0.1, 172.30.32.1(172.30.32.2) GET / HTTP/1.1 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36)
2019/07/21 12:56:10 [crit] 688#688: *3 connect() to unix:/var/run/ttyd.sock failed (2: No such file or directory) while connecting to upstream, client: 172.30.32.2, server: a0d7b954-ssh, request: "GET / HTTP/1.1", upstream: "http://unix:/var/run/ttyd.sock:/", host: "xxxxxx.duckdns.org", referrer: "https://xxxxxx.duckdns.org/a0d7b954_ssh"
[21/Jul/2019:12:56:10 +1000] 502 ipv6, 127.0.0.1, 172.30.32.1(172.30.32.2) GET / HTTP/1.1 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36)

and if I try to map port 7681:

2019/07/21 13:03:14 [emerg] 659#659: bind() to 0.0.0.0:7681 failed (98: Address in use)
nginx: [emerg] bind() to 0.0.0.0:7681 failed (98: Address in use)
2019/07/21 13:03:14 [emerg] 659#659: bind() to 0.0.0.0:7681 failed (98: Address in use)
nginx: [emerg] bind() to 0.0.0.0:7681 failed (98: Address in use)
nginx: [emerg] bind() to 0.0.0.0:7681 failed (98: Address in use)
2019/07/21 13:03:14 [emerg] 659#659: bind() to 0.0.0.0:7681 failed (98: Address in use)
nginx: [emerg] bind() to 0.0.0.0:7681 failed (98: Address in use)
2019/07/21 13:03:14 [emerg] 659#659: bind() to 0.0.0.0:7681 failed (98: Address in use)
2019/07/21 13:03:14 [emerg] 659#659: bind() to 0.0.0.0:7681 failed (98: Address in use)
nginx: [emerg] bind() to 0.0.0.0:7681 failed (98: Address in use)
2019/07/21 13:03:14 [emerg] 659#659: still could not bind()
nginx: [emerg] still could not bind()
[2019/07/21 13:03:16:9607] NOTICE: received signal: SIGTERM (15), exiting...
Received signal 15; terminating.
[2019/07/21 13:03:16:9619] NOTICE: send ^C to force exit.
[cont-finish.d] executing container finish scripts...
[cont-finish.d] 99-message.sh: executing... 
[cont-finish.d] 99-message.sh: exited 0.
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.

Was working prior to this update.

If I disable 7681 and donā€™t map anything on port 80:

[2019/07/21 13:06:52:6412] NOTICE: ttyd 1.5.1-0a8eb1d (libwebsockets 3.0.1)
[2019/07/21 13:06:52:6414] NOTICE: tty configuration:
[2019/07/21 13:06:52:6415] NOTICE:   start command: 30 -d1 -i /var/run/ttyd.sock tmux -u new -A -s hassio zsh
[2019/07/21 13:06:52:6416] NOTICE:   close signal: SIGHUP (1)
[2019/07/21 13:06:52:6417] NOTICE:   terminal type: xterm-256color
[2019/07/21 13:06:52:6497] NOTICE: Creating Vhost 'default' port 7681, 2 protocols, IPv6 off
[services.d] done.
[13:06:52] INFO: Starting the SSH daemon...
[13:06:52] INFO: Starting NGinx...
Server listening on 0.0.0.0 port 622.
Server listening on :: port 622.

Sorry to hear you are having troubles @DavidFW1960ā€¦ So you jumped onto GitHub and created an issue? No? ohā€¦