ssh: Drop cockpit-ssh

Nothing uses this any more, superseded by cockpit-beiboot. This gets rid
of the libssh build dependency.

Drop the `Provides: cockpit-ssh` from Debian. No package ever related to
that virtual package name, and it's meaningless these days.
This commit is contained in:
Martin Pitt 2024-09-19 05:34:09 +02:00 committed by Martin Pitt
parent 98a19742f5
commit 86bf3626e2
37 changed files with 5 additions and 5592 deletions

1
.gitignore vendored
View file

@ -38,7 +38,6 @@ Makefile.in
/cockpit-certificate-ensure
/cockpit-pcp
/cockpit-session
/cockpit-ssh
/cockpit-tls
/cockpit-ws
/cockpit-wsinstance-factory

View file

@ -174,7 +174,6 @@ include src/client/Makefile.am
include src/common/Makefile-common.am
include src/pam-ssh-add/Makefile.am
include src/session/Makefile-session.am
include src/ssh/Makefile-ssh.am
include src/systemd/Makefile.am
include src/tls/Makefile-tls.am
include src/websocket/Makefile-websocket.am

View file

@ -70,12 +70,6 @@ if test "$enable_polkit" != 'no'; then
fi
AC_MSG_RESULT(${enable_polkit:=yes})
# --disable-ssh
AC_MSG_CHECKING([whether to build cockpit-ssh])
AC_ARG_ENABLE(ssh, AS_HELP_STRING([--disable-ssh], [Disable cockpit-ssh build and libssh dependency]))
AM_CONDITIONAL(WITH_COCKPIT_SSH, test "$enable_ssh" != "no")
AC_MSG_RESULT(${enable_ssh:=yes})
# TODO: remove this and clean up the old bridge in src/bridge/
AM_CONDITIONAL(WITH_OLD_BRIDGE, false)
@ -108,14 +102,6 @@ PKG_CHECK_MODULES(krb5, [krb5-gssapi >= 1.11 krb5 >= 1.11])
if test "$enable_polkit" != "no"; then
PKG_CHECK_MODULES(polkit, [polkit-agent-1 >= 0.105])
fi
if test "$enable_ssh" != "no"; then
PKG_CHECK_MODULES(libssh, [libssh >= 0.8.5])
old_CFLAGS=$CFLAGS; CFLAGS=$libssh_CFLAGS
old_LIBS=$LIBS; LIBS=$libssh_LIBS
AC_CHECK_FUNCS(ssh_userauth_publickey_auto_get_current_identity)
CFLAGS=$old_CFLAGS
LIBS=$old_LIBS
fi
# pam
AC_CHECK_HEADER([security/pam_appl.h], ,
@ -442,7 +428,6 @@ echo "
SELinux Policy: ${enable_selinux_policy}
cockpit-client: ${enable_cockpit_client}
cockpit-ssh: ${enable_ssh}
ssh-add: ${SSH_ADD}
ssh-agent: ${SSH_AGENT}

View file

@ -104,7 +104,6 @@ def create_manifest(
'config-opts': [
'--enable-cockpit-client',
'--disable-polkit',
'--disable-ssh',
'--disable-pcp',
'--with-systemdunitdir=/invalid',
'CPPFLAGS=-Itools/mock-build-env',

View file

@ -192,7 +192,7 @@ The following environment variables are set by cockpit-ws when spawning an auth
* **COCKPIT_REMOTE_PEER** Set to the ip address of the connecting user.
The following environment variables are used to set options for the `cockpit-ssh` process:
The following environment variables are used to set options for SSH connections:
* **COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS** Set to `1` to allow connecting to
hosts that are not present in the current `known_hosts` files. If not set,

View file

@ -361,7 +361,7 @@ Example authorize challenge and response messages:
```
Authorize messages are used during authentication by authentication
commands (ei: cockpit-session, cockpit-ssh) to obtain the users credentials
commands like `cockpit-session` to obtain the users credentials
from cockpit-ws. An authentication command can send a authorize message
with a response but no cookie. For example

View file

@ -6,7 +6,6 @@
/usr/libexec/cockpit-wsinstance-factory -- gen_context(system_u:object_r:cockpit_ws_exec_t,s0)
/usr/libexec/cockpit-session -- gen_context(system_u:object_r:cockpit_session_exec_t,s0)
/usr/libexec/cockpit-ssh -- gen_context(system_u:object_r:cockpit_session_exec_t,s0)
/usr/share/cockpit/motd/update-motd -- gen_context(system_u:object_r:cockpit_ws_exec_t,s0)

View file

@ -16,9 +16,8 @@ For example:
The cockpit_session_t SELinux type can be entered via the \fBcockpit_session_exec_t\fP file type.
The default entrypoint paths for the cockpit_session_t domain are the following:
The default entrypoint paths for the cockpit_session_t domain is \fB/usr/libexec/cockpit-session\fP.
/usr/libexec/cockpit-ssh, /usr/libexec/cockpit-session
.SH PROCESS TYPES
SELinux defines process types (domains) for each process running on the system
.PP
@ -221,7 +220,7 @@ SELinux cockpit_session policy is very flexible allowing users to setup their co
.br
.TP 5
Paths:
/usr/libexec/cockpit-ssh, /usr/libexec/cockpit-session
/usr/libexec/cockpit-session
.PP
Note: File context can be temporarily modified with the chcon command. If you want to permanently change the file context you need to use the
@ -252,4 +251,4 @@ This manual page was auto-generated using
.B "sepolicy manpage".
.SH "SEE ALSO"
selinux(8), cockpit_session(8), semanage(8), restorecon(8), chcon(1), sepolicy(8), setsebool(8)
selinux(8), cockpit_session(8), semanage(8), restorecon(8), chcon(1), sepolicy(8), setsebool(8)

View file

@ -236,7 +236,6 @@ endif
# -----------------------------------------------------------------------------
# polkit
# make sure this ends up in the tarball, even with --disable-ssh
polkit_in_files = src/bridge/org.cockpit-project.cockpit-bridge.policy.in
EXTRA_DIST += $(polkit_in_files)

View file

@ -1,78 +0,0 @@
if WITH_COCKPIT_SSH
# -----------------------------------------------------------------------------
# libcockpit-ssh.a: code used in cockpit-ssh and its tests
noinst_LIBRARIES += libcockpit-ssh.a
libcockpit_ssh_a_CPPFLAGS = \
-DG_LOG_DOMAIN=\"cockpit-ssh\" \
$(glib_CFLAGS) \
$(json_glib_CFLAGS) \
$(libssh_CFLAGS) \
$(AM_CPPFLAGS)
libcockpit_ssh_a_LIBS = \
libcockpit-ssh.a \
$(libcockpit_common_a_LIBS) \
$(libssh_LIBS) \
$(NULL)
libcockpit_ssh_a_SOURCES = \
src/ssh/cockpitsshoptions.c \
src/ssh/cockpitsshoptions.h \
src/ssh/cockpitsshrelay.h \
src/ssh/cockpitsshrelay.c \
$(NULL)
# -----------------------------------------------------------------------------
# cockpit-ssh
libexec_PROGRAMS += cockpit-ssh
cockpit_ssh_CPPFLAGS = $(libcockpit_ssh_a_CPPFLAGS)
cockpit_ssh_LDADD = $(libcockpit_ssh_a_LIBS)
cockpit_ssh_SOURCES = src/ssh/ssh.c
# -----------------------------------------------------------------------------
# mock-ssh
check_PROGRAMS += mock-sshd
mock_sshd_CPPFLAGS = $(libcockpit_ssh_a_CPPFLAGS) $(TEST_CPP)
mock_sshd_LDADD = $(libcockpit_ssh_a_LIBS) $(TEST_LIBS)
mock_sshd_SOURCES = src/ssh/mock-sshd.c
# -----------------------------------------------------------------------------
# Unit tests
dist_check_DATA += \
src/ssh/mock_rsa_key \
src/ssh/mock_ecdsa_key \
src/ssh/test_rsa \
src/ssh/test_rsa.pub \
src/ssh/mock_known_hosts \
src/ssh/mock-pid-cat \
src/ssh/mock-config \
src/ssh/invalid_known_hosts \
$(NULL)
TEST_PROGRAM += test-sshbridge
test_sshbridge_CPPFLAGS = $(libcockpit_ssh_a_CPPFLAGS) $(TEST_CPP)
test_sshbridge_LDADD = $(libcockpit_ssh_a_LIBS) $(TEST_LIBS)
test_sshbridge_SOURCES = src/ssh/test-sshbridge.c
TEST_PROGRAM += test-sshoptions
test_sshoptions_CPPFLAGS = $(libcockpit_ssh_a_CPPFLAGS) $(TEST_CPP)
test_sshoptions_LDADD = $(libcockpit_ssh_a_LIBS) $(TEST_LIBS)
test_sshoptions_SOURCES = src/ssh/test-sshoptions.c
check_DATA += test_rsa_key
CLEANFILES += test_rsa_key
test_rsa_key: src/ssh/test_rsa
$(AM_V_GEN) cp $< $@ && chmod 600 $@
update-known-hosts:
cat $(srcdir)/src/ssh/mock_*.pub | \
sed -ne 's/\(.*\) [^ ]\+$$/[localhost]:*,[127.0.0.1]:* \1/p' > \
$(srcdir)/src/ssh/mock_known_hosts
endif

View file

@ -1,127 +0,0 @@
/*
* This file is part of Cockpit.
*
* Copyright (C) 2016 Red Hat, Inc.
*
* Cockpit is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Cockpit is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "common/cockpitconf.h"
#include "cockpitsshoptions.h"
static const gchar *default_command = "cockpit-bridge";
static gboolean
has_environment_val (gchar **env,
const gchar *name)
{
const gchar *v = g_environ_getenv (env, name);
return v != NULL && v[0] != '\0';
}
static const gchar *
get_environment_val (gchar **env,
const gchar *name,
const gchar *defawlt)
{
if (has_environment_val (env, name))
return g_environ_getenv (env, name);
else
return defawlt;
}
static gchar **
set_environment_val (gchar **env,
const gchar *name,
const gchar *val)
{
return g_environ_setenv (env, name, val ? val : "", TRUE);
}
static gboolean
get_environment_bool (gchar **env,
const gchar *name,
gboolean defawlt)
{
const gchar *value = get_environment_val (env, name, NULL);
if (!value)
return defawlt;
return g_strcmp0 (value, "yes") == 0 ||
g_strcmp0 (value, "true") == 0 ||
g_strcmp0 (value, "1") == 0;
}
static gchar **
set_environment_bool (gchar **env,
const gchar *name,
gboolean val)
{
return g_environ_setenv (env, name, val ? "1" : "", TRUE);
}
static gboolean
get_connect_to_unknown_hosts (gchar **env)
{
/* Fallback to deprecated allowUnknown option; use cockpit_conf_string() to
* test for existence as _bool() cannot tell apart "unset" from "set to false". */
if (!cockpit_conf_string (COCKPIT_CONF_SSH_SECTION, "connectToUnknownHosts") &&
cockpit_conf_bool (COCKPIT_CONF_SSH_SECTION, "allowUnknown", FALSE))
return TRUE;
if (cockpit_conf_bool (COCKPIT_CONF_SSH_SECTION, "connectToUnknownHosts", FALSE))
return TRUE;
if (!has_environment_val (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS"))
return get_environment_bool (env, "COCKPIT_SSH_ALLOW_UNKNOWN", FALSE);
return get_environment_bool (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS", FALSE);
}
CockpitSshOptions *
cockpit_ssh_options_from_env (gchar **env)
{
CockpitSshOptions *options = g_new0 (CockpitSshOptions, 1);
options->knownhosts_file = get_environment_val (env, "COCKPIT_SSH_KNOWN_HOSTS_FILE", NULL);
options->command = get_environment_val (env, "COCKPIT_SSH_BRIDGE_COMMAND", default_command);
options->remote_peer = get_environment_val (env, "COCKPIT_REMOTE_PEER", "localhost");
options->connect_to_unknown_hosts = get_connect_to_unknown_hosts (env);
return options;
}
gchar **
cockpit_ssh_options_to_env (CockpitSshOptions *options,
gchar **env)
{
env = set_environment_bool (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS",
options->connect_to_unknown_hosts);
env = set_environment_val (env, "COCKPIT_SSH_KNOWN_HOSTS_FILE",
options->knownhosts_file);
env = set_environment_val (env, "COCKPIT_REMOTE_PEER",
options->remote_peer);
/* Don't reset these vars unless we have values for them */
if (options->command)
{
env = set_environment_val (env, "COCKPIT_SSH_BRIDGE_COMMAND",
options->command);
}
return env;
}

View file

@ -1,41 +0,0 @@
/*
* This file is part of Cockpit.
*
* Copyright (C) 2016 Red Hat, Inc.
*
* Cockpit is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Cockpit is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef __COCKPIT_SSH_OPTIONS_H__
#define __COCKPIT_SSH_OPTIONS_H__
#include <gio/gio.h>
G_BEGIN_DECLS
typedef struct {
const gchar *knownhosts_file;
const gchar *command;
const gchar *remote_peer;
gboolean connect_to_unknown_hosts;
} CockpitSshOptions;
CockpitSshOptions * cockpit_ssh_options_from_env (gchar **env);
gchar ** cockpit_ssh_options_to_env (CockpitSshOptions *options,
gchar **env);
G_END_DECLS
#endif

File diff suppressed because it is too large Load diff

View file

@ -1,48 +0,0 @@
/*
* This file is part of Cockpit.
*
* Copyright (C) 2017 Red Hat, Inc.
*
* Cockpit is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Cockpit is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef __COCKPIT_SSH_RELAY_H__
#define __COCKPIT_SSH_RELAY_H__
#include <glib.h>
#include <glib-object.h>
G_BEGIN_DECLS
/* EXIT CODE CONSTANTS */
#define INTERNAL_ERROR 1
#define AUTHENTICATION_FAILED 2
#define DISCONNECTED 254
#define TERMINATED 255
#define NO_COCKPIT 127
#define COCKPIT_TYPE_SSH_RELAY (cockpit_ssh_relay_get_type ())
typedef struct _CockpitSshRelay CockpitSshRelay;
typedef struct _CockpitSshRelay CockpitSshRelayClass;
GType cockpit_ssh_relay_get_type (void) G_GNUC_CONST;
CockpitSshRelay * cockpit_ssh_relay_new (const gchar *connection_string);
gint cockpit_ssh_relay_result (CockpitSshRelay* self);
G_END_DECLS
#endif

View file

@ -1 +0,0 @@
[localhost]:*,[127.0.0.1]:* ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+Q8SP0Zf0jS//d3EJQHvdOA5iPGRcH+bZ5wqdRiZi0TCCKsCicKBlEwC8HtRo/l7pT+k0Je5n5SBLTJTq2oRcPsxDhhmKI1TVFot7+BDbU0THbuGEIZNk4spxJ84W/Znvs5RxdKinY9nFDB5hofX5EHuGiM53tlyE3+0gHG95rklKD/TAsLwubrmCkJkLEbZM2B/Kai+fKtgHjgefASbiMIxTi4/ryHT4Pb3tRLihbBylyoTZLgs7FrOPDUGu+e2mrC2rrbi1RvVBVgzF0ekJHtC7zjevddKlLgHCuc6SztJuDKC0eIqCiBjleG7tmqxM4O3PIn3nRgPSxydjjWod

View file

@ -1,2 +0,0 @@
[Ssh-Login]
host = 127.0.0.2

View file

@ -1,7 +0,0 @@
#!/bin/sh
# Here we send our PID as a message on channel '11x', which we happen to know will be
# 31 bytes long. After that we echo anything sent
/usr/bin/printf '37\n\n{ \"command\" : \"init\", \"version\": 1 }31\n11x\n{ "pid": % 16s }' $$
exec /bin/cat

File diff suppressed because it is too large Load diff

View file

@ -1,9 +0,0 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS
1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSuD2S/4gae/4UIUb7AYejIP1LC1xiE
RVk3pBatZyV5twpAZMrGtycYvTFJDaNISAx5ctmzjCgijUqTdlOohgo8AAAAqDO+d0Uzvn
dFAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK4PZL/iBp7/hQhR
vsBh6Mg/UsLXGIRFWTekFq1nJXm3CkBkysa3Jxi9MUkNo0hIDHly2bOMKCKNSpN2U6iGCj
wAAAAhAOviSdIlwJIeAAbittvzOo4OmXrWyvLYt1VwEtmYScTSAAAADm1hcnRpbkB0b29s
Ym94AQ==
-----END OPENSSH PRIVATE KEY-----

View file

@ -1 +0,0 @@
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK4PZL/iBp7/hQhRvsBh6Mg/UsLXGIRFWTekFq1nJXm3CkBkysa3Jxi9MUkNo0hIDHly2bOMKCKNSpN2U6iGCjw= dev@cockpit-project.org

View file

@ -1 +0,0 @@
[localhost]:*,[127.0.0.1]:*,[::1]:* ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYzo07OA0H6f7orVun9nIVjGYrkf8AuPDScqWGzlKpAqSipoQ9oY/mwONwIOu4uhKh7FTQCq5p+NaOJ6+Q4z++xBzSOLFseKX+zyLxgNG28jnF06WSmrMsSfvPdNuZKt9rZcQFKn9fRNa8oixa+RsqEEVEvTYhGtRf7w2wsV49xIoIza/bln1ABX1YLaCByZow+dK3ZlHn/UU0r4ewpAIZhve4vCvAsMe5+6KJH8ft/OKXXQY06h6jCythLV4h18gY/sYosOa+/4XgpmBiE7fDeFRKVjP3mvkxMpxce+ckOFae2+aJu51h513S9kxY2PmKaV/JU9HBYO+yO4j+j24v

View file

@ -1,27 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAmM6NOzgNB+n+6K1bp/ZyFYxmK5H/ALjw0nKlhs5SqQKkoqaE
PaGP5sDjcCDruLoSoexU0AquafjWjievkOM/vsQc0jixbHil/s8i8YDRtvI5xdOl
kpqzLEn7z3TbmSrfa2XEBSp/X0TWvKIsWvkbKhBFRL02IRrUX+8NsLFePcSKCM2v
25Z9QAV9WC2ggcmaMPnSt2ZR5/1FNK+HsKQCGYb3uLwrwLDHufuiiR/H7fzil10G
NOoeowsrYS1eIdfIGP7GKLDmvv+F4KZgYhO3w3hUSlYz95r5MTKcXHvnJDhWntvm
ibudYedd0vZMWNj5imlfyVPRwWDvsjuI/o9uLwIDAQABAoIBAGIbc2fLA+rJ3ITN
EOTVAMg+/TYKJVv0YYHsY8QaYc3rSYK4QH1FZpuzyhKqwE05Ak996bIsuXCGeFKK
vlja3ol/ZjW+eoN3LrRbj0bY+0xnVpph2ZM3ycOsuISotXkwooNUsjbS4zZqfyhb
QvkhqMQn8CFDDibRD/uMAxEnv6cNs8zyJu+RgfA1kxW/BAKjKg0mf5EwltMwfLCc
O+3tQZR0P8w6UXSBLrGZvPUvWjLZHuhSAzeRiA4deEerX5tEOwkx/iUbyma2HOh/
p9BKpaJ67RH+UdwysV6x8JRRXAhTt8jy+5T1OdaOYYisn71M4PVnajmWwTbZ7Vy6
XJx1MVECgYEAxlTXF1JPyMoxqgWhV222f+UONyuNnB1mKNP5kSI1WIBrsWSkOqvQ
a6pihSGKaQFLMVzBkfrOAkSGJTtJuOrhA3lk3thJsG4ACuX+MgfXi/xqQpvX3SBx
QS23YfxC86HOBkDUKr/xHSHJPKidNVlOtQbyDioxuqR2Vk2IrsvJmZkCgYEAxT0B
7mP0JypL576pW1CE2LhrqTmmTBy3qVPAjV4fnv7KduH2I/a88WVmOWRSDd14RCBf
h1JG/mUkWgKaiY8Dh9dCGiJBe06OHKRFjmC+AXx/R0IwOHD1i1kVIRz5t5nzNhLs
cXWYNIFDxW9zN+z8aNiRZ0+0oGvD6MGZI5FA8wcCgYAgEO+F0cUcjbRh7O8dF5v+
KaaWvO/0Ybx2tW8QTBub54eB8ueqpMTZ435yT+309ESYAos5cveD3lhiBKfywecH
jMUGUqn3YJGZMX5b0HDFLVZw1omcMvactyuDKCobAfoxgKHNF6OANko3CHwCeCIF
ms3gBGpt5tFLOtXyjPhXYQKBgHwzt6SbkqKbEuNi/5h98rnaIAmXQO4K42igUc9z
puvjPDFyhyIMfNxx4tZfIwCSJuqXjDBVklkd7a80loXq5elDlt+IFL4GMJ0+oIJQ
zzV2ZVvFBUJ1d1oBhbmtWl7QdgPmFLg5udfOUpPgY6ii9is7vQxWd8LRObO3PazV
ChY/AoGBAI9N9tF49xDcyJDEmS7X2LQu81QqGQuKRlv0/z/jqUjqWsDVnvNdKePC
bs+yHRQciDYQB/g+FSUHE7bh8CN0qrQrttEk69sfm7gK8rusK16RIrQ7cHo2WnjG
82WGZ9YvmnUq3qkCzyS/po1TI3Mr1sHnY2xwcTS/DOzAnD2wNsU0
-----END RSA PRIVATE KEY-----

View file

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYzo07OA0H6f7orVun9nIVjGYrkf8AuPDScqWGzlKpAqSipoQ9oY/mwONwIOu4uhKh7FTQCq5p+NaOJ6+Q4z++xBzSOLFseKX+zyLxgNG28jnF06WSmrMsSfvPdNuZKt9rZcQFKn9fRNa8oixa+RsqEEVEvTYhGtRf7w2wsV49xIoIza/bln1ABX1YLaCByZow+dK3ZlHn/UU0r4ewpAIZhve4vCvAsMe5+6KJH8ft/OKXXQY06h6jCythLV4h18gY/sYosOa+/4XgpmBiE7fDeFRKVjP3mvkxMpxce+ckOFae2+aJu51h513S9kxY2PmKaV/JU9HBYO+yO4j+j24v dev@cockpit-project.org

View file

@ -1,105 +0,0 @@
/*
* This file is part of Cockpit.
*
* Copyright (C) 2016 Red Hat, Inc.
*
* Cockpit is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Cockpit is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <gio/gio.h>
#include <glib-unix.h>
#include "common/cockpithacks-glib.h"
#include "common/cockpitsystem.h"
#include "cockpitsshrelay.h"
static gboolean
on_exit_signal (gpointer data)
{
GMainLoop *loop = data;
g_debug ("Received exit signal, shutting down");
g_main_loop_quit (loop);
return TRUE;
}
int
main (int argc,
char *argv[])
{
gint ret = 1;
CockpitSshRelay *relay;
GOptionContext *context;
GError *error = NULL;
GMainLoop *loop = NULL;
cockpit_hacks_redirect_gdebug_to_stderr ();
signal (SIGALRM, SIG_DFL);
signal (SIGQUIT, SIG_DFL);
signal (SIGTSTP, SIG_IGN);
signal (SIGHUP, SIG_IGN);
signal (SIGPIPE, SIG_IGN);
cockpit_setenv_check ("GSETTINGS_BACKEND", "memory", TRUE);
cockpit_setenv_check ("GIO_USE_PROXY_RESOLVER", "dummy", TRUE);
cockpit_setenv_check ("GIO_USE_VFS", "local", TRUE);
context = g_option_context_new ("- cockpit-ssh [user@]host[:port]");
if (!g_option_context_parse (context, &argc, &argv, &error))
{
ret = INTERNAL_ERROR;
goto out;
}
if (argc != 2)
{
g_printerr ("cockpit-ssh: unexpected additional arguments, see --help\n");
ret = INTERNAL_ERROR;
goto out;
}
loop = g_main_loop_new (NULL, FALSE);
relay = cockpit_ssh_relay_new (argv[1]);
g_signal_connect_swapped (relay, "disconnect", G_CALLBACK (g_main_loop_quit), loop);
guint sig_term = g_unix_signal_add (SIGTERM, on_exit_signal, loop);
guint sig_int = g_unix_signal_add (SIGINT, on_exit_signal, loop);
g_main_loop_run (loop);
ret = cockpit_ssh_relay_result (relay);
g_object_unref (relay);
g_source_remove (sig_term);
g_source_remove (sig_int);
out:
g_option_context_free (context);
if (error)
{
g_printerr ("cockpit-ssh: %s\n", error->message);
g_error_free (error);
}
if (loop)
g_main_loop_unref (loop);
return ret;
}

File diff suppressed because it is too large Load diff

View file

@ -1,150 +0,0 @@
/*
* This file is part of Cockpit.
*
* Copyright (C) 2016 Red Hat, Inc.
*
* Cockpit is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Cockpit is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Cockpit; If not, see <https://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "common/cockpitconf.h"
#include "testlib/cockpittest.h"
#include "cockpitsshoptions.h"
/* Mock override these from other files */
extern const gchar *cockpit_config_file;
static void
test_ssh_options (void)
{
gchar **env = NULL;
CockpitSshOptions *options = NULL;
options = cockpit_ssh_options_from_env (env);
g_assert_cmpstr (options->remote_peer, ==, "localhost");
g_assert_cmpstr (options->knownhosts_file, ==, NULL);
g_assert_cmpstr (options->command, ==, "cockpit-bridge");
options->knownhosts_file = "other-known";
options->command = "other-command";
options->remote_peer = "other";
env = cockpit_ssh_options_to_env (options, NULL);
g_assert_cmpstr (g_environ_getenv (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS"), ==, "");
g_assert_cmpstr (g_environ_getenv (env, "COCKPIT_SSH_KNOWN_HOSTS_FILE"), ==, "other-known");
g_assert_cmpstr (g_environ_getenv (env, "COCKPIT_SSH_BRIDGE_COMMAND"), ==, "other-command");
g_assert_cmpstr (g_environ_getenv (env, "COCKPIT_REMOTE_PEER"), ==, "other");
options->connect_to_unknown_hosts = TRUE;
g_strfreev (env);
env = cockpit_ssh_options_to_env (options, NULL);
g_assert_cmpstr (g_environ_getenv (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS"), ==, "1");
g_free (options);
g_strfreev (env);
/* Start with a clean env */
env = g_environ_setenv (NULL, "COCKPIT_SSH_KNOWN_HOSTS_FILE", "other-known", TRUE);
env = g_environ_setenv (env, "COCKPIT_SSH_BRIDGE_COMMAND", "other-command", TRUE);
env = g_environ_setenv (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS", "", TRUE);
options = cockpit_ssh_options_from_env (env);
g_assert_false (options->connect_to_unknown_hosts);
g_assert_cmpstr (options->knownhosts_file, ==, "other-known");
g_assert_cmpstr (options->command, ==, "other-command");
g_free (options);
env = g_environ_setenv (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS", "bogus", TRUE);
options = cockpit_ssh_options_from_env (env);
g_assert_false (options->connect_to_unknown_hosts);
g_free (options);
env = g_environ_setenv (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS", "yes", TRUE);
options = cockpit_ssh_options_from_env (env);
g_assert_true (options->connect_to_unknown_hosts);
g_free (options);
env = g_environ_setenv (env, "COCKPIT_SSH_CONNECT_TO_UNKNOWN_HOSTS", "", TRUE);
options = cockpit_ssh_options_from_env (env);
g_assert_false (options->connect_to_unknown_hosts);
g_free (options);
g_strfreev (env);
}
static void
test_ssh_options_deprecated (void)
{
gchar **env = NULL;
CockpitSshOptions *options = NULL;
env = g_environ_setenv (NULL, "COCKPIT_SSH_ALLOW_UNKNOWN", "yes", TRUE);
options = cockpit_ssh_options_from_env (env);
g_assert_true (options->connect_to_unknown_hosts);
g_free (options);
env = g_environ_setenv (env, "COCKPIT_SSH_KNOWN_HOSTS_DATA", "authorize", TRUE);
options = cockpit_ssh_options_from_env (env);
g_free (options);
env = g_environ_setenv (env, "COCKPIT_SSH_KNOWN_HOSTS_DATA", "", TRUE);
options = cockpit_ssh_options_from_env (env);
g_free (options);
g_strfreev (env);
}
static void
test_ssh_options_alt_conf (void)
{
CockpitSshOptions *options = NULL;
cockpit_config_file = SRCDIR "/src/ws/mock-config/cockpit/cockpit-alt.conf";
cockpit_conf_cleanup ();
options = cockpit_ssh_options_from_env (NULL);
g_assert_true (options->connect_to_unknown_hosts);
g_free (options);
}
static void
test_ssh_options_conf_deprecated (void)
{
CockpitSshOptions *options = NULL;
cockpit_config_file = SRCDIR "/src/ws/mock-config/cockpit/cockpit-deprecated.conf";
cockpit_conf_cleanup ();
options = cockpit_ssh_options_from_env (NULL);
g_assert_true (options->connect_to_unknown_hosts);
g_free (options);
}
int
main (int argc,
char *argv[])
{
cockpit_test_init (&argc, &argv);
g_test_add_func ("/ssh-options/basic", test_ssh_options);
g_test_add_func ("/ssh-options/deprecated", test_ssh_options_deprecated);
g_test_add_func ("/ssh-options/alt-conf", test_ssh_options_alt_conf);
g_test_add_func ("/ssh-options/deprecated-conf", test_ssh_options_conf_deprecated);
return g_test_run ();
}

View file

@ -1,27 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvkPEj9GX9I0v/3dxCUB73TgOYjxkXB/m2ecKnUYmYtEwgirA
onCgZRMAvB7UaP5e6U/pNCXuZ+UgS0yU6tqEXD7MQ4YZiiNU1RaLe/gQ21NEx27h
hCGTZOLKcSfOFv2Z77OUcXSop2PZxQweYaH1+RB7hojOd7ZchN/tIBxvea5JSg/0
wLC8Lm65gpCZCxG2TNgfymovnyrYB44HnwEm4jCMU4uP68h0+D297US4oWwcpcqE
2S4LOxazjw1Brvntpqwtq624tUb1QVYMxdHpCR7Qu843r3XSpS4BwrnOks7Sbgyg
tHiKgogY5Xhu7ZqsTODtzyJ950YD0scnY41qHQIDAQABAoIBAFlQHnkUfixCCoH1
Y45gQsS5h6b9im7kWs128ziYsXQ5lnfD8eFO1TwdC39DSZpvrcX/yQy9sYf7uoke
Tdlg8jkLEX+w91Qs+al9h8SN0fvivqqPljUcPcBh5X3wnYGVUil/NvN7O6A38wXY
hnp2OKzN2+5vUdxIMm39X6ZvMrT/FyQjvdp393G4f0blYl7Npdc+HYPNnhHdgi4I
NUa32pG3ypoWkQRAYApaG2RXPTWQXTM2w4CFK5uJx/pB3r5NidU/H0XAl4TAuw9M
V9hrIPAOh5zKvHcPv8xOwR0Bt36F+/QATjO9pvlzQO6Rn3x2dyAVdaFMgdYTNpQQ
t0ZYsYECgYEA8yAhKUnArEQ4A+AI+pCtZuftzkXmnQ5SHNUtF2GeR5tRZ1PBF/tp
zoVRW+5ge1hI2VEx3ziGHEIBr7FfVej7twQ3URv5ILYj6CoNOf+HxkZgkTDGpYdj
AVvyjeD5qJEwCSeJ2bxD5LmxS9is8b8rXjVKRuPxwLeWqEjemPb0KNUCgYEAyFcL
TdN9cZghuzLZ0vfP4k9Hratunskz5njTFKnJx90riE7VqPH9OHvTeHn1xJ5WACnb
mFpAUG1v7BmC+WLEIPnKRKvuzL5C1yr+mntwTZsrwsLDdT/nfTS9hWzk9U6ykhJA
De8nNfxHuCoqM++CNvh+rA4W2Zc6WmE0uCwXYCkCgYEA70KMP+Sb3yvXcEDWtTcR
3raZ+agitib0ufk0QdFIgbGhH6111lMOIjZjBbSGcHxGXM8h5Ens+PwgSrWkW5hH
tylIAuMjfYShu4U+tPf6ty5lNB0rMJUW4qyI/AUNzEztV+T4LTWwHvR7PWgDcniu
hiytZyxFqmFBu2TS4vgM+e0CgYAvAL0WNVhpHlhLo1KXvKx5XEBk7qO1fV8/43ki
j/NXgPyFrnlSefP/HI4w5exThRKIV0m+JO6R8BsiOZoRCKsbUX+zPON6BemIsf2q
IOvoSU+rEibpi2S0a3tLopDVPPGIc9+zZTi94cKx4rKkHL1gSEzv8R5LTr/SFJxZ
2X5igQKBgBTkIeB0yI2PGf1drI+YbhDfgIphEeSCPbWxcUzPCcwLqXGo41cr8RXY
TgWtKk0gXhJWkMSIIXrfucCvXHTkk8wlqqgAVwrTgq4Q16LfBuucLwSe4TLp4SJZ
Lko5CzOq+EIv6DIlZ3tRHeDFatWe+41w27KhrV9yxB6Ay0MalP4i
-----END RSA PRIVATE KEY-----

View file

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+Q8SP0Zf0jS//d3EJQHvdOA5iPGRcH+bZ5wqdRiZi0TCCKsCicKBlEwC8HtRo/l7pT+k0Je5n5SBLTJTq2oRcPsxDhhmKI1TVFot7+BDbU0THbuGEIZNk4spxJ84W/Znvs5RxdKinY9nFDB5hofX5EHuGiM53tlyE3+0gHG95rklKD/TAsLwubrmCkJkLEbZM2B/Kai+fKtgHjgefASbiMIxTi4/ryHT4Pb3tRLihbBylyoTZLgs7FrOPDUGu+e2mrC2rrbi1RvVBVgzF0ekJHtC7zjevddKlLgHCuc6SztJuDKC0eIqCiBjleG7tmqxM4O3PIn3nRgPSxydjjWod

View file

@ -1,39 +0,0 @@
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBgu8TlNL
abjyeEucxdc6/GAAAAEAAAAAEAAAGXAAAAB3NzaC1yc2EAAAADAQABAAABgQC/YTIbXU4c
/jDRAYqz3wHqYNvicXO8tVhZekQmDed0BxeV6j9v80PNGml/q16+bkWuVGGoTwV5wwVNvW
gywPIJYmm4aMbxQhM6iBjvQZFtm+EoKzjOTxCinh9o9RuuaaMuh31/Z/9QqgwNVWtSIlts
JeWijiye0JDCq93h1DlwWvr/MFzkJPZf1jfvxvA7Twt+JL/RLEhR5b+qzdc6qH8sxYX8ve
QDGCuQP8ogAgsI9VrNIzjfZhW5ybGGpFmeO52XRNyh44ZatfHmhQTipvyrkQvCsPS5qn0A
SIDmF0CU5elTYGLdtAf9pgXkD0xXhOjVKhgpQdkf2oj9xMrc2bww/CM/9ns3nNNGnLorFu
VLAU24uBSb52AaYvujLoEnn1IT8rLIvSAKhXzTylg4iVC0JNjhEkgm+qjHeRMAWpTO3HhM
eXDkERV6QwIWlruxiS8q/Kci9u5J36KG00ghd6jVn/bK5xTnYu+TUyG6Q6vPp7DWBXhkJ5
XibqUUL17j60MAAAWQUyu8AEpQWha8mU3Cg2WsManyAJrmHTZ1SqI2f/RotUkn23ii7DV9
Q7blQjED9iKX2sWbjs0VM3Jxw7YiVY3x7LkcGv5Vua0fY7TBa6TYlYTpj++YZ5OEZnt+z6
Xp8lkKpZFtEdrd/3+NF8jkbf8S2s+7SYt7SKWRKmC8sbN2D0O7HafV58gRjgoYkh39Z+XB
mC8TxShGTRdZxPBSPOssIuBQiA/r+f9QzH4vaNtiI/LaR7XlOEUcsA2IIvkOEcZYMSh6bO
ViR3iiqSgGTtkojAVTE0Hq0pahaxgr6FpDr4E69I+OSo0pCAKqUfxq4GT2Th6BrjhAsnpj
4wMxL/Xn/wPdj9yyCu+cXgqAh+Dl8pcZnT3enQqiu243OeCA8qMk/X/aQK1W2VkYUL4AKU
SePX18kx26XDdx7V2bpriOGKgozGKh/G/LABsz4D0vjHDL1rctMi0qPvW+Esz5MxGQBDyM
zMuFrdNKT7M5WZi3Qn7x5j6XN2xidUZ7LK9r4OoUdrWzrszTlpD4pHPcHNcSvJ5RvycHQp
7rVsX1JhdcsFav/VzsQD70atsioJF25OaRNcp7/flyo2sVisWp4PY8OuCrvwINNxb7bqzY
u8AZneob66YRnIYD6c2kOh8pkdcdXrtSOxZE9/RPVkLg/5mDzNMj1CXkqS5h6Fpj6AGR6f
bN7FyCzMbi6vWmai1s2pFBRTARrRjphZFQyIUsuwbhii2cDSYkqMfFNnahms1t983Xa+aM
gFabLqv6KSUkwaatHRbmJCQ7iYUspId2oQ/7Wh9As6+vQUCd1HR7CWrE7FfscHdcza09Ys
6yWDuLyQivQd/6eF6DUIb64e0Q2dK/JcQOy1fxpHAxO1LBWEzFi8Z5KvfXJ1H1r96aNPbi
wvwjibOP9YFpALPNe8WtL/zsQ7z3QLYUcyojHWE6zvjfA3xMiZ0cXZI8byLeUZbPKWDiCm
Rsc9phColDeHz6SKrIXHsmLK5Y2I+zVtEsQi1ohK0z0Yw8lTMoNHSN+qAaFYhlL3Ewx6HM
XITlX0AL1JqhQCtC1FGFE64etaeifJgau70Iz/u1jLnMfIItWJtLouiyEXoiIfyKMG1iwM
9mzoGgiJm7D3464XnnCK/MZ2RpHQlZy+FiEE8f6lFC26PQrvF7mBMRVUSleWUPWXW0zha/
4ACTyoZbUB3W66f/Agz0J+WXv2jq6G+hWOE+xR6mXgnEVKP6AQU/7m0O3C8NSOzyf6b0nE
+wF54shWTqdpKWLQdq8ttA82AsvubfAKHkw8AI8uU5I0Pbg0xuwHJApQNZbUIr9+3/P/du
X2pivKCzpcLG0c24293M/KeZk/mGyxJ+OnAUG0wXmdI7hZda3A8KeQJk/ls9DhzZniuJ1G
F9SoiXKFbCUF0oMUNrOkDkHXaVGI7s/A1H+ip47Br+XuJkNAZXxHqH2zusWjFisSWxWzG1
Pku6t8fKSWRbnIUZQ89bf+rZlvqnMCEOzLizPVSzeERXFakplxaBgxHiWIk8koIGkuvKln
WNS1u+uvIGCToNsWyd5OyG+ZCKLfk7gI7+91ARJZ8fBk/hVFVJRB6Q9VPnXveY5J/W4xs1
CDDaNARufOaVxNAHK3/VPMzqPJvuVvlJt+FqdffWi1VsjfUpTANM8z9Ynbr5WjDpPm4muE
GlYt2EsyC1SDa8nj82S9UgGYB0cPY4aq8BfDI4HpkB7Ba0reVq0L6WuWWcBt1PuUSmDbCh
bFHb3scpk9ZPjjfGhNaDay6HVNzMwzccphOIDaNhTcER4JKA2sTEcmRh1NuU1XnbPtaVOC
S/U9pFMI++6GZBL07O0lCEmfOM9S2fxJ+/pGfjqRZCRqTQTmY+anoEfiOSB9bwFYur8yBf
4xkIKGTjOI5y+dbPNEuND78Ae14=
-----END OPENSSH PRIVATE KEY-----

View file

@ -1 +0,0 @@
Generated with: ssh-keygen -q -f src/ssh/test_rsa_password_protected -N sshfoobar

View file

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/YTIbXU4c/jDRAYqz3wHqYNvicXO8tVhZekQmDed0BxeV6j9v80PNGml/q16+bkWuVGGoTwV5wwVNvWgywPIJYmm4aMbxQhM6iBjvQZFtm+EoKzjOTxCinh9o9RuuaaMuh31/Z/9QqgwNVWtSIltsJeWijiye0JDCq93h1DlwWvr/MFzkJPZf1jfvxvA7Twt+JL/RLEhR5b+qzdc6qH8sxYX8veQDGCuQP8ogAgsI9VrNIzjfZhW5ybGGpFmeO52XRNyh44ZatfHmhQTipvyrkQvCsPS5qn0ASIDmF0CU5elTYGLdtAf9pgXkD0xXhOjVKhgpQdkf2oj9xMrc2bww/CM/9ns3nNNGnLorFuVLAU24uBSb52AaYvujLoEnn1IT8rLIvSAKhXzTylg4iVC0JNjhEkgm+qjHeRMAWpTO3HhMeXDkERV6QwIWlruxiS8q/Kci9u5J36KG00ghd6jVn/bK5xTnYu+TUyG6Q6vPp7DWBXhkJ5XibqUUL17j60M= martin@toolbox

View file

@ -84,7 +84,6 @@ BuildRequires: autoconf automake
BuildRequires: make
BuildRequires: python3-devel
BuildRequires: gettext >= 0.21
BuildRequires: libssh-devel >= 0.8.5
BuildRequires: openssl-devel
BuildRequires: gnutls-devel >= 3.4.3
BuildRequires: zlib-devel
@ -198,7 +197,6 @@ echo '%dir %{_datadir}/cockpit/base1' >> base.list
find %{buildroot}%{_datadir}/cockpit/base1 -type f -o -type l >> base.list
echo '%{_sysconfdir}/cockpit/machines.d' >> base.list
echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list
echo '%{_libexecdir}/cockpit-ssh' >> base.list
%if %{build_pcp}
echo '%dir %{_datadir}/cockpit/pcp' > pcp.list
@ -289,7 +287,6 @@ troubleshooting, interactive command-line sessions, and more.
%package bridge
Summary: Cockpit bridge server-side component
Requires: glib-networking
Provides: cockpit-ssh = %{version}-%{release}
# 233 dropped jquery.js, pages started to bundle it (commit 049e8b8dce)
Conflicts: cockpit-dashboard < 233
Conflicts: cockpit-networkmanager < 233

View file

@ -1,7 +1,6 @@
etc/cockpit/machines.d
usr/bin/cockpit-bridge
usr/lib/cockpit/cockpit-askpass
usr/lib/cockpit/cockpit-ssh
usr/lib/python*
usr/share/cockpit/base1/
usr/share/man/man1/cockpit-bridge.1

View file

@ -6,7 +6,6 @@ Build-Depends: debhelper-compat (= 13),
dh-python,
gettext (>= 0.19.7),
gettext (>= 0.21) | appstream,
libssh-dev (>= 0.8.5),
zlib1g-dev,
libkrb5-dev (>= 1.11),
libxslt1-dev,
@ -67,7 +66,6 @@ Depends: ${misc:Depends},
${python3:Depends},
glib-networking
Recommends: openssh-client
Provides: cockpit-ssh
Breaks: cockpit-ws (<< 181.x),
Replaces: cockpit-dashboard (<< 170.x), cockpit-ws (<< 181.x)
Description: Cockpit bridge server-side component

View file

@ -36,12 +36,6 @@ Copyright: Copyright (c) 2014 - 2016 Red Hat
Copyright (c) 1995,2004 Silicon Graphics, Inc. All Rights Reserved.
License: GPL-2+
Files: src/ssh/mock-sshd.c
Copyright: Copyright 2003-2011 Aris Adamantiadis
License: public-domain
You are free to copy this file, modify it in any way, consider it being public
domain.
Files: tools/install-sh
Copyright: Copyright (C) 1994 X Consortium
License: MIT/X11

View file

@ -1,2 +0,0 @@
# FIXME: Running the unit tests changes the identifier in that file
extend-diff-ignore = "src/ssh/mock_rsa_key.pub$"

View file

@ -47,7 +47,6 @@ else
--enable-prefix-only \
--disable-pcp \
--disable-polkit \
--disable-ssh \
> /dev/null
fi