Skip to content

[bug] Option set error when host alias contains underscore _ #48

@Jerry-Terrasse

Description

@Jerry-Terrasse

Problem

I have a host definition in my ~/.ssh/config like this:

Host host_a
    HostName x.x.x.x
    User myuser

When I use sshping to test that host, I got:

$ sshping -v host_a
User: --not specified--
Host: host_a
Port: 22
Echo: cat > /dev/null
 Cfg: --default--

+++ Attempting connection to host_a:22
*** Option set error: Invalid argument in ssh_options_set
*** Cannot establish ssh session

It works well if I replace host_a with host-a in ~/.ssh/config

Possible Reason

In src/sshping.cxx:540:

    _CKERR(ssh_options_set(ses, SSH_OPTIONS_HOST, addr));

In src/config_parser.c:242 of libssh, the hostname is passed to a syntax checking:

    if (hostname != NULL) {
        *hostname = strndup(tok, endp - tok);
        if (*hostname == NULL) {
            goto error;
        }
        /* if not an ip, check syntax */
        rc = ssh_is_ipaddr(*hostname);
        if (rc == 0) {
            rc = ssh_check_hostname_syntax(*hostname); // here
            if (rc != SSH_OK) {
                goto error;
            }
        }
    }

This checking is made according to RFC1035 section 2.3.1, and underscore is not allowed in hostname. Therefore, Option set error is caused.

Should that syntax checking be applied to host alias ?

PS: ssh host_a works well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions