mirror of
https://abf.rosa.ru/djam/openssh.git
synced 2025-02-25 10:43:09 +00:00
446 lines
13 KiB
RPMSpec
446 lines
13 KiB
RPMSpec
# Version of watchdog patch
|
|
%define wversion 4.4p1
|
|
|
|
# Version of the hpn patch
|
|
%define hpnver 13v6
|
|
|
|
%bcond_with skey
|
|
%bcond_without krb5
|
|
%bcond_with watchdog
|
|
%bcond_without gnomeaskpass
|
|
%bcond_with ldap
|
|
%bcond_with sftpcontrol
|
|
%bcond_with hpn
|
|
%bcond_with audit
|
|
%bcond_without libedit
|
|
|
|
%define OPENSSH_PATH "/usr/local/bin:/bin:%{_bindir}"
|
|
%define XAUTH %{_bindir}/xauth
|
|
|
|
Summary: OpenSSH free Secure Shell (SSH) implementation
|
|
Name: openssh
|
|
Version: 7.9p1
|
|
Release: 1
|
|
License: BSD
|
|
Group: Networking/Remote access
|
|
Url: http://www.openssh.com/
|
|
Source0: http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/%{name}-%{version}.tar.gz
|
|
Source1: http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/%{name}-%{version}.tar.gz.asc
|
|
Source9: README.sftpfilecontrol
|
|
# this is never to be applied by default
|
|
# http://www.sc.isc.tohoku.ac.jp/~hgot/sources/openssh-watchdog.html
|
|
Source10: openssh-%{wversion}-watchdog.patch.tgz
|
|
Source12: ssh_ldap_key.pl
|
|
Source15: ssh-avahi-integration
|
|
Source17: sshd.pam
|
|
Source18: sshd.service
|
|
Source21: README.hpn
|
|
Source22: sshd-keygen
|
|
Source23: sshd.socket
|
|
Source24: sshd@.service
|
|
Source25: sshd-keygen.service
|
|
Patch1: openssh-7.6p1-config.patch
|
|
# rediffed from openssh-4.4p1-watchdog.patch.tgz
|
|
Patch4: openssh-4.4p1-watchdog.diff
|
|
# optional ldap support
|
|
# http://dev.inversepath.com/trac/openssh-lpk
|
|
#Patch6: http://dev.inversepath.com/openssh-lpk/openssh-lpk-4.6p1-0.3.9.patch
|
|
# new location for the lpk patch.
|
|
# rediffed from "svn checkout http://openssh-lpk.googlecode.com/svn/trunk/ openssh-lpk-read-only"
|
|
Patch6: openssh-lpk-5.4p1-0.3.10.diff
|
|
# http://sftpfilecontrol.sourceforge.net
|
|
# Not applied by default
|
|
# P7 is rediffed and slightly adjusted from http://sftplogging.sourceforge.net/download/v1.5/openssh-4.4p1.sftplogging-v1.5.patch
|
|
Patch7: openssh-4.9p1.sftplogging-v1.5.diff
|
|
# (tpg) http://www.psc.edu/networking/projects/hpn-ssh/
|
|
Patch11: http://www.psc.edu/networking/projects/hpn-ssh/openssh-5.2p1-hpn%{hpnver}.diff
|
|
Patch12: http://www.psc.edu/networking/projects/hpn-ssh/openssh5.1-peaktput.diff
|
|
#gw: from Fedora:
|
|
Patch14: openssh-4.7p1-audit.patch
|
|
Patch17: openssh-5.1p1-askpass-progress.patch
|
|
Patch18: openssh-4.3p2-askpass-grab-info.patch
|
|
Patch20: openssh-7.1p1-debian-restore-tcp-wrappers.patch
|
|
Patch21: openssh-7.2p2-x11.patch
|
|
Patch24: openssh-7.6p1-log-in-chroot.patch
|
|
# From Fedora. Signalling for systemd.
|
|
Patch25: openssh-7.4p1-systemd.patch
|
|
BuildRequires: groff-base
|
|
BuildRequires: systemd-units
|
|
%if %{with ldap}
|
|
BuildRequires: openldap-devel
|
|
%endif
|
|
BuildRequires: pam-devel
|
|
%if %{with skey}
|
|
BuildRequires: skey-devel
|
|
%endif
|
|
BuildRequires: tcp_wrappers-devel
|
|
%if %{with audit}
|
|
BuildRequires: pkgconfig(audit)
|
|
%endif
|
|
%if %{with gnomeaskpass}
|
|
BuildRequires: pkgconfig(gtk+-2.0)
|
|
%endif
|
|
%if %{with krb5}
|
|
BuildRequires: pkgconfig(krb5)
|
|
%endif
|
|
%if %{with libedit}
|
|
BuildRequires: pkgconfig(libedit)
|
|
BuildRequires: pkgconfig(ncurses)
|
|
%endif
|
|
BuildRequires: pkgconfig(openssl)
|
|
BuildRequires: pkgconfig(zlib)
|
|
BuildConflicts: libgssapi-devel
|
|
Requires: tcp_wrappers
|
|
|
|
%description
|
|
Ssh (Secure Shell) is a program for logging into a remote machine and for
|
|
executing commands in a remote machine. It is intended to replace
|
|
rlogin and rsh, and provide secure encrypted communications between
|
|
two untrusted hosts over an insecure network. X11 connections and
|
|
arbitrary TCP/IP ports can also be forwarded over the secure channel.
|
|
|
|
OpenSSH is OpenBSD's rework of the last free version of SSH, bringing it
|
|
up to date in terms of security and features, as well as removing all
|
|
patented algorithms to separate libraries (OpenSSL).
|
|
|
|
This package includes the core files necessary for both the OpenSSH
|
|
client and server. To make this package useful, you should also
|
|
install openssh-clients, openssh-server, or both.
|
|
|
|
%files
|
|
%doc ChangeLog OVERVIEW README* CREDITS LICENCE TODO ssh_ldap_key.pl
|
|
%if %{with ldap}
|
|
%doc *.schema
|
|
%endif
|
|
%if %{with watchdog}
|
|
%doc CHANGES-openssh-watchdog openssh-watchdog.html
|
|
%endif
|
|
%if %{with sftpcontrol}
|
|
%doc README.sftpfilecontrol
|
|
%endif
|
|
%{_bindir}/ssh-keygen
|
|
%dir %{_sysconfdir}/ssh
|
|
%{_bindir}/ssh-keyscan
|
|
%attr(4711,root,root) %{_libdir}/ssh/ssh-keysign
|
|
%{_libdir}/ssh/ssh-pkcs11-helper
|
|
%{_mandir}/man1/ssh-keygen.1*
|
|
%{_mandir}/man1/ssh-keyscan.1*
|
|
%{_mandir}/man8/ssh-keysign.8*
|
|
%{_mandir}/man8/ssh-pkcs11-helper.8*
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package clients
|
|
Summary: OpenSSH Secure Shell protocol clients
|
|
Group: Networking/Remote access
|
|
Requires: %{name} = %{EVRD}
|
|
Provides: ssh-clients = %{EVRD}
|
|
Provides: sftp = %{EVRD}
|
|
Provides: ssh = %{EVRD}
|
|
|
|
%description clients
|
|
This package includes the clients necessary to make encrypted connections
|
|
to SSH servers.
|
|
|
|
%files clients
|
|
%{_bindir}/scp
|
|
%{_bindir}/ssh
|
|
%{_bindir}/ssh-agent
|
|
%{_bindir}/ssh-add
|
|
%{_bindir}/ssh-copy-id
|
|
%{_bindir}/sftp
|
|
%{_mandir}/man1/scp.1*
|
|
%{_mandir}/man1/ssh-copy-id.1*
|
|
%{_mandir}/man1/ssh.1*
|
|
%{_mandir}/man1/ssh-agent.1*
|
|
%{_mandir}/man1/ssh-add.1*
|
|
%{_mandir}/man1/sftp.1*
|
|
%{_mandir}/man5/ssh_config.5*
|
|
%config(noreplace) %{_sysconfdir}/ssh/ssh_config
|
|
%{_sysconfdir}/profile.d/90ssh-client.sh
|
|
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package server
|
|
Summary: OpenSSH Secure Shell protocol server (sshd)
|
|
Group: System/Servers
|
|
Requires: %{name}-clients = %{EVRD}
|
|
Requires(pre): pam
|
|
Requires(pre,post): %{name} = %{EVRD}
|
|
Requires(pre,postun,preun,postun): rpm-helper
|
|
%if %{with skey}
|
|
Requires: skey
|
|
# script sshd-keygen is full of bashisms
|
|
Requires: /bin/bash
|
|
%endif
|
|
Provides: ssh-server = %{EVRD}
|
|
Provides: sshd = %{EVRD}
|
|
|
|
%description server
|
|
This package contains the secure shell daemon. The sshd is the server
|
|
part of the secure shell protocol and allows ssh clients to connect to
|
|
your host.
|
|
|
|
%files server
|
|
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/sshd
|
|
%{_sbindir}/sshd
|
|
%{_sbindir}/sshd-keygen
|
|
%dir %{_libdir}/ssh
|
|
%{_libdir}/ssh/sftp-server
|
|
%{_mandir}/man5/sshd_config.5*
|
|
%{_mandir}/man5/moduli.5*
|
|
%{_mandir}/man8/sshd.8*
|
|
%{_mandir}/man8/sftp-server.8*
|
|
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/ssh/sshd_config
|
|
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/ssh/denyusers
|
|
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/pam.d/sshd
|
|
%config(noreplace) %{_sysconfdir}/avahi/services/%{name}.service
|
|
%config(noreplace) %{_sysconfdir}/ssh/moduli
|
|
%{_unitdir}/sshd.service
|
|
%{_unitdir}/sshd.socket
|
|
%{_unitdir}/sshd-keygen.service
|
|
%{_unitdir}/sshd@.service
|
|
%dir %attr(0755,root,root) /var/empty
|
|
|
|
%pre server
|
|
%_pre_useradd sshd /var/empty /bin/true
|
|
|
|
%post server
|
|
#!/bin/sh
|
|
%systemd_post sshd.service sshd.socket
|
|
# Don't run sshd-keygen.service here, because otherwise all ISO images will have the same host keys
|
|
# sshd-keygen.service is ran as a part of sshd.service
|
|
|
|
%preun server
|
|
%systemd_preun sshd.service sshd.socket
|
|
|
|
%postun server
|
|
%systemd_postun_with_restart sshd.service
|
|
%_postun_userdel sshd
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%package askpass-common
|
|
Summary: OpenSSH X11 passphrase common scripts
|
|
Group: Networking/Remote access
|
|
|
|
%description askpass-common
|
|
OpenSSH X11 passphrase common scripts.
|
|
|
|
%files askpass-common
|
|
%{_sysconfdir}/profile.d/90ssh-askpass.*
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%if %{with gnomeaskpass}
|
|
%package askpass-gnome
|
|
Summary: OpenSSH GNOME passphrase dialog
|
|
Group: Networking/Remote access
|
|
Requires: %{name}
|
|
Requires: %{name}-askpass-common
|
|
Requires(post,postun): update-alternatives
|
|
Provides: %{name}-askpass = %{EVRD}
|
|
Provides: ssh-askpass = %{EVRD}
|
|
Provides: ssh-extras = %{EVRD}
|
|
|
|
%description askpass-gnome
|
|
This package contains the GNOME passphrase dialog.
|
|
|
|
%files askpass-gnome
|
|
%{_libdir}/ssh/gnome-ssh-askpass
|
|
|
|
%post askpass-gnome
|
|
update-alternatives --install %{_libdir}/ssh/ssh-askpass ssh-askpass %{_libdir}/ssh/gnome-ssh-askpass 20
|
|
update-alternatives --install %{_bindir}/ssh-askpass bssh-askpass %{_libdir}/ssh/gnome-ssh-askpass 20
|
|
|
|
%postun askpass-gnome
|
|
[ $1 = 0 ] || exit 0
|
|
update-alternatives --remove ssh-askpass %{_libdir}/ssh/gnome-ssh-askpass
|
|
update-alternatives --remove bssh-askpass %{_libdir}/ssh/gnome-ssh-askpass
|
|
%endif
|
|
|
|
#----------------------------------------------------------------------------
|
|
|
|
%prep
|
|
%setup -q -a10
|
|
%patch1 -p1 -b .mdkconf
|
|
%if %{with watchdog}
|
|
#patch -p0 -s -z .wdog < %{name}-%{wversion}-watchdog.patch
|
|
%patch4 -p1 -b .watchdog
|
|
%endif
|
|
%if %{with ldap}
|
|
sed -i 's|UsePrivilegeSeparation yes|#UsePrivilegeSeparation yes|' sshd_config
|
|
%patch6 -p1 -b .lpk
|
|
rm -f README.lpk.lpk
|
|
%define _default_patch_fuzz 3
|
|
%else
|
|
%define _default_patch_fuzz 2
|
|
%endif
|
|
%if %{with sftpcontrol}
|
|
#cat %{SOURCE8} | patch -p1 -s -z .sftpcontrol
|
|
echo "This patch is broken or needs to be updated/rediffed"; exit 1
|
|
%patch7 -p1 -b .sftplogging-v1.5
|
|
# README with license terms for this patch
|
|
install -m 0644 %{SOURCE9} .
|
|
%endif
|
|
%if %{with hpn}
|
|
echo "This patch is broken or needs to be updated/rediffed"; exit 1
|
|
%patch11 -p1 -b .hpn
|
|
%patch12 -p1 -b .peak
|
|
install %{SOURCE21} .
|
|
%endif
|
|
%if %{with audit}
|
|
%patch14 -p1 -b .audit
|
|
%endif
|
|
%patch17 -p1 -b .progress
|
|
%patch18 -p1 -b .grab-info
|
|
%patch20 -p1 -b .tcp_wrappers
|
|
%patch21 -p1 -b .sshdt
|
|
%patch24 -p1 -b .fingerprint
|
|
%patch25 -p1 -b .systemd
|
|
|
|
install %{SOURCE12} .
|
|
|
|
install -m 0644 %{SOURCE17} sshd.pam
|
|
|
|
# fix attribs
|
|
chmod 644 ChangeLog OVERVIEW README* INSTALL CREDITS LICENCE TODO ssh_ldap_key.pl
|
|
|
|
# http://qa.mandriva.com/show_bug.cgi?id=22957
|
|
perl -pi -e "s|_OPENSSH_PATH_|%{OPENSSH_PATH}|g" sshd_config
|
|
|
|
autoreconf -fi
|
|
|
|
%build
|
|
%ifarch %{ix86}
|
|
%define _disable_ld_no_undefined 1
|
|
%endif
|
|
|
|
%serverbuild
|
|
%configure \
|
|
--prefix=%{_prefix} \
|
|
--sysconfdir=%{_sysconfdir}/ssh \
|
|
--mandir=%{_mandir} \
|
|
--libdir=%{_libdir} \
|
|
--libexecdir=%{_libdir}/ssh \
|
|
--datadir=%{_datadir}/ssh \
|
|
--disable-strip \
|
|
--with-tcp-wrappers \
|
|
--with-pam \
|
|
--with-default-path=%{OPENSSH_PATH} \
|
|
--with-xauth=%{XAUTH} \
|
|
--with-privsep-path=/var/empty \
|
|
--without-zlib-version-check \
|
|
--with-maildir=/var/spool/mail \
|
|
--with-sandbox=rlimit \
|
|
--with-ssh1 \
|
|
%if %{with krb5}
|
|
--with-kerberos5=%{_prefix} \
|
|
%endif
|
|
%if %{with skey}
|
|
--with-skey \
|
|
%endif
|
|
%if %{with ldap}
|
|
--with-libs="-lldap -llber" \
|
|
--with-cppflags="-DWITH_LDAP_PUBKEY -DLDAP_DEPRECATED" \
|
|
%endif
|
|
--with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:%{_sbindir}:%{_bindir} \
|
|
%if %{with libedit}
|
|
--with-libedit \
|
|
%else
|
|
--without-libedit \
|
|
%endif
|
|
%if %{with audit}
|
|
--with-linux-audit \
|
|
%endif
|
|
--with-systemd
|
|
|
|
%ifarch %{ix86} %{arm}
|
|
# crisb - ftrapv causes link error (missing mulodi4) on 32-bit systems
|
|
# seems the configure code does not detect this (despite attempts)
|
|
find . -name Makefile -exec sed -i 's|-ftrapv||' {} \;
|
|
%endif
|
|
|
|
%make
|
|
|
|
%if %{with gnomeaskpass}
|
|
pushd contrib
|
|
make gnome-ssh-askpass2 CC="%{__cc} %{optflags} %{ldflags}"
|
|
mv gnome-ssh-askpass2 gnome-ssh-askpass
|
|
popd
|
|
%endif
|
|
|
|
%install
|
|
%makeinstall_std
|
|
|
|
install -d %{buildroot}%{_sysconfdir}/ssh
|
|
install -d %{buildroot}%{_sysconfdir}/pam.d/
|
|
install -d %{buildroot}%{_sysconfdir}/sysconfig
|
|
install -d %{buildroot}%{_unitdir}
|
|
install -m644 sshd.pam %{buildroot}%{_sysconfdir}/pam.d/sshd
|
|
install -m644 %{SOURCE18} %{buildroot}%{_unitdir}/sshd.service
|
|
install -m755 %{SOURCE22} %{buildroot}%{_sbindir}/sshd-keygen
|
|
install -m644 %{SOURCE23} %{buildroot}%{_unitdir}/sshd.socket
|
|
install -m644 %{SOURCE24} %{buildroot}%{_unitdir}/sshd@.service
|
|
install -m644 %{SOURCE25} %{buildroot}%{_unitdir}/sshd-keygen.service
|
|
|
|
if [[ -f sshd_config.out ]]; then
|
|
install -m600 sshd_config.out %{buildroot}%{_sysconfdir}/ssh/sshd_config
|
|
else
|
|
install -m600 sshd_config %{buildroot}%{_sysconfdir}/ssh/sshd_config
|
|
fi
|
|
echo "root" > %{buildroot}%{_sysconfdir}/ssh/denyusers
|
|
|
|
if [[ -f ssh_config.out ]]; then
|
|
install -m644 ssh_config.out %{buildroot}%{_sysconfdir}/ssh/ssh_config
|
|
else
|
|
install -m644 ssh_config %{buildroot}%{_sysconfdir}/ssh/ssh_config
|
|
fi
|
|
echo " StrictHostKeyChecking no" >> %{buildroot}%{_sysconfdir}/ssh/ssh_config
|
|
|
|
mkdir -p %{buildroot}%{_libdir}/ssh
|
|
|
|
install -d %{buildroot}%{_sysconfdir}/profile.d/
|
|
%if %{with gnomeaskpass}
|
|
install -m 755 contrib/gnome-ssh-askpass %{buildroot}%{_libdir}/ssh/gnome-ssh-askpass
|
|
%endif
|
|
|
|
cat > %{buildroot}%{_sysconfdir}/profile.d/90ssh-askpass.csh <<EOF
|
|
setenv SSH_ASKPASS %{_libdir}/ssh/ssh-askpass
|
|
EOF
|
|
|
|
cat > %{buildroot}%{_sysconfdir}/profile.d/90ssh-askpass.sh <<EOF
|
|
export SSH_ASKPASS=%{_libdir}/ssh/ssh-askpass
|
|
EOF
|
|
|
|
cat > %{buildroot}%{_sysconfdir}/profile.d/90ssh-client.sh <<'EOF'
|
|
# fix hanging ssh clients on exit
|
|
if [ -n "$BASH_VERSION" ]; then
|
|
shopt -s huponexit
|
|
elif [ -n "$ZSH_VERSION" ]; then
|
|
setopt hup
|
|
fi
|
|
EOF
|
|
|
|
install -p -m755 contrib/ssh-copy-id %{buildroot}%{_bindir}/
|
|
install -m 644 contrib/ssh-copy-id.1 %{buildroot}/%{_mandir}/man1/
|
|
|
|
# create pre-authentication directory
|
|
mkdir -p %{buildroot}/var/empty
|
|
|
|
# remove unwanted files
|
|
rm -f %{buildroot}%{_libdir}/ssh/ssh-askpass
|
|
|
|
cat > %{buildroot}%{_sysconfdir}/sysconfig/sshd << EOF
|
|
#SSHD="%{_sbindir}/sshd"
|
|
#PID_FILE="/var/run/sshd.pid"
|
|
#OPTIONS=""
|
|
EOF
|
|
|
|
# avahi integration support (misc)
|
|
mkdir -p %{buildroot}%{_sysconfdir}/avahi/services/
|
|
install -m 0644 %{SOURCE15} %{buildroot}%{_sysconfdir}/avahi/services/%{name}.service
|
|
|
|
# make sure strip can touch it
|
|
chmod 755 %{buildroot}%{_libdir}/ssh/ssh-keysign
|