mirror of
git://anongit.mindrot.org/openssh.git
synced 2024-11-23 18:23:25 +08:00
- (stevesk) Create contrib/cygwin/ directory; patch from
Corinna Vinschen <vinschen@redhat.com>
This commit is contained in:
parent
a58e0af1bd
commit
9be6e267b5
@ -1,5 +1,7 @@
|
|||||||
20001029
|
20001029
|
||||||
- (stevesk) Fix typo in auth.c: USE_PAM not PAM
|
- (stevesk) Fix typo in auth.c: USE_PAM not PAM
|
||||||
|
- (stevesk) Create contrib/cygwin/ directory; patch from
|
||||||
|
Corinna Vinschen <vinschen@redhat.com>
|
||||||
|
|
||||||
20001028
|
20001028
|
||||||
- (djm) fix select hack in serverloop.c from Philippe WILLEM
|
- (djm) fix select hack in serverloop.c from Philippe WILLEM
|
||||||
|
137
contrib/cygwin/README
Normal file
137
contrib/cygwin/README
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
This package is the actual port of OpenSSH to Cygwin 1.1.
|
||||||
|
|
||||||
|
===========================================================================
|
||||||
|
Important change since 2.3.0p1:
|
||||||
|
|
||||||
|
When using `ntea' or `ntsec' you now have to care for the ownership
|
||||||
|
and permission bits of your host key files and your private key files.
|
||||||
|
The host key files have to be owned by the NT account which starts
|
||||||
|
sshd. The user key files have to be owned by the user. The permission
|
||||||
|
bits of the private key files (host and user) have to be at least
|
||||||
|
rw------- (0600)!
|
||||||
|
|
||||||
|
Note that this is forced under `ntsec' only if the files are on a NTFS
|
||||||
|
filesystem (which is recommended) due to the lack of any basic security
|
||||||
|
features of the FAT/FAT32 filesystems.
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
Since this package is part of the base distribution now, the location
|
||||||
|
of the files has changed from /usr/local to /usr. The global configuration
|
||||||
|
files are in /etc now.
|
||||||
|
|
||||||
|
If you are installing OpenSSH the first time, you can generate
|
||||||
|
global config files, server keys and your own user keys by running
|
||||||
|
|
||||||
|
/usr/bin/ssh-config
|
||||||
|
|
||||||
|
If you are updating your installation you may run the above ssh-config
|
||||||
|
as well to move your configuration files to the new location and to
|
||||||
|
erase the files at the old location.
|
||||||
|
|
||||||
|
Be sure to start the new ssh-config when updating!
|
||||||
|
|
||||||
|
Note that this binary archive doesn't contain default config files in /etc.
|
||||||
|
That files are only created if ssh-config is started.
|
||||||
|
|
||||||
|
Install sshd as daemon via SRVANY.EXE (recommended on NT/W2K), via inetd
|
||||||
|
(results in very slow deamon startup!) or from the command line (recommended
|
||||||
|
on 9X/ME).
|
||||||
|
|
||||||
|
If starting via inetd, copy sshd to eg. /usr/sbin/in.sshd and add the
|
||||||
|
following line to your inetd.conf file:
|
||||||
|
|
||||||
|
sshd stream tcp nowait root /usr/sbin/in.sshd sshd -i
|
||||||
|
|
||||||
|
Moreover you'll have to add the following line to your
|
||||||
|
${SYSTEMROOT}/system32/drivers/etc/services file:
|
||||||
|
|
||||||
|
sshd 22/tcp #SSH daemon
|
||||||
|
|
||||||
|
Authentication to sshd is possible in one of two ways.
|
||||||
|
You'll have to decide before starting sshd!
|
||||||
|
|
||||||
|
- If you want to authenticate via RSA and you want to login to that
|
||||||
|
machine to exactly one user account you can do so by running sshd
|
||||||
|
under that user account. You must change /etc/sshd_config
|
||||||
|
to contain the following:
|
||||||
|
|
||||||
|
RSAAuthentication yes
|
||||||
|
|
||||||
|
Moreover it's possible to use rhosts and/or rhosts with
|
||||||
|
RSA authentication by setting the following in sshd_config:
|
||||||
|
|
||||||
|
RhostsAuthentication yes
|
||||||
|
RhostsRSAAuthentication yes
|
||||||
|
|
||||||
|
- If you want to be able to login to different user accounts you'll
|
||||||
|
have to start sshd under system account or any other account that
|
||||||
|
is able to switch user context. Note that administrators are _not_
|
||||||
|
able to do that by default! You'll have to give the following
|
||||||
|
special user rights to the user:
|
||||||
|
"Act as part of the operating system"
|
||||||
|
"Replace process level token"
|
||||||
|
"Increase quotas"
|
||||||
|
and if used via service manager
|
||||||
|
"Logon as a service".
|
||||||
|
|
||||||
|
The system account does of course own that user rights by default.
|
||||||
|
|
||||||
|
Unfortunately, if you choose that way, you can only logon with
|
||||||
|
NT password authentification and you should change
|
||||||
|
/etc/sshd_config to contain the following:
|
||||||
|
|
||||||
|
PasswordAuthentication yes
|
||||||
|
RhostsAuthentication no
|
||||||
|
RhostsRSAAuthentication no
|
||||||
|
RSAAuthentication no
|
||||||
|
|
||||||
|
However you can login to the user which has started sshd with
|
||||||
|
RSA authentication anyway. If you want that, change the RSA
|
||||||
|
authentication setting back to "yes":
|
||||||
|
|
||||||
|
RSAAuthentication yes
|
||||||
|
|
||||||
|
You may use all features of the CYGWIN=ntsec setting the same
|
||||||
|
way as they are used by the `login' port on sources.redhat.com:
|
||||||
|
|
||||||
|
The pw_gecos field may contain an additional field, that begins
|
||||||
|
with (upper case!) "U-", followed by the domain and the username
|
||||||
|
separated by a backslash.
|
||||||
|
CAUTION: The SID _must_ remain the _last_ field in pw_gecos!
|
||||||
|
BTW: The field separator in pw_gecos is the comma.
|
||||||
|
The username in pw_name itself may be any nice name:
|
||||||
|
|
||||||
|
domuser::1104:513:John Doe,U-domain\user,S-1-5-21-...
|
||||||
|
|
||||||
|
Now you may use `domuser' as your login name with telnet!
|
||||||
|
This is possible additionally for local users, if you don't like
|
||||||
|
your NT login name ;-) You only have to leave out the domain:
|
||||||
|
|
||||||
|
locuser::1104:513:John Doe,U-user,S-1-5-21-...
|
||||||
|
|
||||||
|
V2 server and user keys are generated by `ssh-config'. If you want to
|
||||||
|
create DSA keys by yourself, call ssh-keygen with `-d' option.
|
||||||
|
|
||||||
|
DSA authentication similar to RSA:
|
||||||
|
Add keys to ~/.ssh/authorized_keys2
|
||||||
|
Interop. w/ ssh.com dsa-keys:
|
||||||
|
ssh-keygen -f /key/from/ssh.com -X >> ~/.ssh/authorized_keys2
|
||||||
|
and vice versa:
|
||||||
|
ssh-keygen -f /privatekey/from/openssh -x > ~/.ssh2/mykey.pub
|
||||||
|
echo Key mykey.pub >> ~/.ssh2/authorization
|
||||||
|
|
||||||
|
If you want to build from source, the following options to
|
||||||
|
configure are used for the Cygwin binary distribution:
|
||||||
|
|
||||||
|
--prefix=/usr --sysconfdir=/etc --libexecdir='${exec_prefix}/sbin
|
||||||
|
|
||||||
|
You must have installed the zlib, openssl and regex packages to
|
||||||
|
be able to build OpenSSH!
|
||||||
|
|
||||||
|
Please send requests, error reports etc. to cygwin@sources.redhat.com.
|
||||||
|
|
||||||
|
Have fun,
|
||||||
|
|
||||||
|
Corinna Vinschen <vinschen@cygnus.com>
|
||||||
|
Cygwin Developer
|
||||||
|
Red Hat Inc.
|
324
contrib/cygwin/ssh-config
Executable file
324
contrib/cygwin/ssh-config
Executable file
@ -0,0 +1,324 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# ssh-config, Copyright 2000, Red Hat Inc.
|
||||||
|
#
|
||||||
|
# This file is part of the Cygwin port of OpenSSH.
|
||||||
|
|
||||||
|
# set -x
|
||||||
|
|
||||||
|
# Subdirectory where the new package is being installed
|
||||||
|
PREFIX=/usr
|
||||||
|
|
||||||
|
# Directory where the config files are stored
|
||||||
|
SYSCONFDIR=/etc
|
||||||
|
|
||||||
|
# Subdirectory where an old package might be installed
|
||||||
|
OLDPREFIX=/usr/local
|
||||||
|
OLDSYSCONFDIR=${OLDPREFIX}/etc
|
||||||
|
|
||||||
|
request()
|
||||||
|
{
|
||||||
|
answer=""
|
||||||
|
while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ]
|
||||||
|
do
|
||||||
|
echo -n "$1 (yes/no) "
|
||||||
|
read answer
|
||||||
|
done
|
||||||
|
if [ "X${answer}" = "Xyes" ]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for running ssh/sshd processes first. Refuse to do anything while
|
||||||
|
# some ssh processes are still running
|
||||||
|
|
||||||
|
if ps -ef | grep -v grep | grep -q ssh
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
echo "There are still ssh processes running. Please shut them down first."
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for ${SYSCONFDIR} directory
|
||||||
|
|
||||||
|
if [ -e "${SYSCONFDIR}" -a ! -d "${SYSCONFDIR}" ]
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
echo "${SYSCONFDIR} is existant but not a directory."
|
||||||
|
echo "Cannot create global configuration files."
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create it if necessary
|
||||||
|
|
||||||
|
if [ ! -e "${SYSCONFDIR}" ]
|
||||||
|
then
|
||||||
|
mkdir "${SYSCONFDIR}"
|
||||||
|
if [ ! -e "${SYSCONFDIR}" ]
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
echo "Creating ${SYSCONFDIR} directory failed"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for an old installation in ${OLDPREFIX} unless ${OLDPREFIX} isn't
|
||||||
|
# the same as ${PREFIX}
|
||||||
|
|
||||||
|
if [ "${OLDPREFIX}" != "${PREFIX}" ]
|
||||||
|
then
|
||||||
|
if [ -f "${OLDPREFIX}/sbin/sshd" ]
|
||||||
|
then
|
||||||
|
echo
|
||||||
|
echo "You seem to have an older installation in ${OLDPREFIX}."
|
||||||
|
echo
|
||||||
|
# Check if old global configuration files exist
|
||||||
|
if [ -f "${OLDSYSCONFDIR}/ssh_host_key" ]
|
||||||
|
then
|
||||||
|
if request "Do you want to copy your config files to your new installation?"
|
||||||
|
then
|
||||||
|
cp -f ${OLDSYSCONFDIR}/ssh_host_key ${SYSCONFDIR}
|
||||||
|
cp -f ${OLDSYSCONFDIR}/ssh_host_key.pub ${SYSCONFDIR}
|
||||||
|
cp -f ${OLDSYSCONFDIR}/ssh_host_dsa_key ${SYSCONFDIR}
|
||||||
|
cp -f ${OLDSYSCONFDIR}/ssh_host_dsa_key.pub ${SYSCONFDIR}
|
||||||
|
cp -f ${OLDSYSCONFDIR}/ssh_config ${SYSCONFDIR}
|
||||||
|
cp -f ${OLDSYSCONFDIR}/sshd_config ${SYSCONFDIR}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if request "Do you want to erase your old installation?"
|
||||||
|
then
|
||||||
|
rm -f ${OLDPREFIX}/bin/ssh.exe
|
||||||
|
rm -f ${OLDPREFIX}/bin/ssh-config
|
||||||
|
rm -f ${OLDPREFIX}/bin/scp.exe
|
||||||
|
rm -f ${OLDPREFIX}/bin/ssh-add.exe
|
||||||
|
rm -f ${OLDPREFIX}/bin/ssh-agent.exe
|
||||||
|
rm -f ${OLDPREFIX}/bin/ssh-keygen.exe
|
||||||
|
rm -f ${OLDPREFIX}/bin/slogin
|
||||||
|
rm -f ${OLDSYSCONFDIR}/ssh_host_key
|
||||||
|
rm -f ${OLDSYSCONFDIR}/ssh_host_key.pub
|
||||||
|
rm -f ${OLDSYSCONFDIR}/ssh_host_dsa_key
|
||||||
|
rm -f ${OLDSYSCONFDIR}/ssh_host_dsa_key.pub
|
||||||
|
rm -f ${OLDSYSCONFDIR}/ssh_config
|
||||||
|
rm -f ${OLDSYSCONFDIR}/sshd_config
|
||||||
|
rm -f ${OLDPREFIX}/man/man1/ssh.1
|
||||||
|
rm -f ${OLDPREFIX}/man/man1/scp.1
|
||||||
|
rm -f ${OLDPREFIX}/man/man1/ssh-add.1
|
||||||
|
rm -f ${OLDPREFIX}/man/man1/ssh-agent.1
|
||||||
|
rm -f ${OLDPREFIX}/man/man1/ssh-keygen.1
|
||||||
|
rm -f ${OLDPREFIX}/man/man1/slogin.1
|
||||||
|
rm -f ${OLDPREFIX}/man/man8/sshd.8
|
||||||
|
rm -f ${OLDPREFIX}/sbin/sshd.exe
|
||||||
|
rm -f ${OLDPREFIX}/sbin/sftp-server.exe
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# First generate host keys if not already existing
|
||||||
|
|
||||||
|
if [ ! -f "${SYSCONFDIR}/ssh_host_key" ]
|
||||||
|
then
|
||||||
|
echo "Generating ${SYSCONFDIR}/ssh_host_key"
|
||||||
|
ssh-keygen -f ${SYSCONFDIR}/ssh_host_key -N ''
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${SYSCONFDIR}/ssh_host_dsa_key" ]
|
||||||
|
then
|
||||||
|
echo "Generating ${SYSCONFDIR}/ssh_host_dsa_key"
|
||||||
|
ssh-keygen -d -f ${SYSCONFDIR}/ssh_host_dsa_key -N ''
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if ssh_config exists. If yes, ask for overwriting
|
||||||
|
|
||||||
|
if [ -f "${SYSCONFDIR}/ssh_config" ]
|
||||||
|
then
|
||||||
|
if request "Overwrite existing ${SYSCONFDIR}/ssh_config file?"
|
||||||
|
then
|
||||||
|
rm -f "${SYSCONFDIR}/ssh_config"
|
||||||
|
if [ -f "${SYSCONFDIR}/ssh_config" ]
|
||||||
|
then
|
||||||
|
echo "Can't overwrite. ${SYSCONFDIR}/ssh_config is write protected."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create default ssh_config from here script
|
||||||
|
|
||||||
|
if [ ! -f "${SYSCONFDIR}/ssh_config" ]
|
||||||
|
then
|
||||||
|
echo "Creating default ${SYSCONFDIR}/ssh_config file"
|
||||||
|
cat > ${SYSCONFDIR}/ssh_config << EOF
|
||||||
|
# This is ssh client systemwide configuration file. This file provides
|
||||||
|
# defaults for users, and the values can be changed in per-user configuration
|
||||||
|
# files or on the command line.
|
||||||
|
|
||||||
|
# Configuration data is parsed as follows:
|
||||||
|
# 1. command line options
|
||||||
|
# 2. user-specific file
|
||||||
|
# 3. system-wide file
|
||||||
|
# Any configuration value is only changed the first time it is set.
|
||||||
|
# Thus, host-specific definitions should be at the beginning of the
|
||||||
|
# configuration file, and defaults at the end.
|
||||||
|
|
||||||
|
# Site-wide defaults for various options
|
||||||
|
|
||||||
|
# Host *
|
||||||
|
# ForwardAgent yes
|
||||||
|
# ForwardX11 yes
|
||||||
|
# RhostsAuthentication yes
|
||||||
|
# RhostsRSAAuthentication yes
|
||||||
|
# RSAAuthentication yes
|
||||||
|
# PasswordAuthentication yes
|
||||||
|
# FallBackToRsh no
|
||||||
|
# UseRsh no
|
||||||
|
# BatchMode no
|
||||||
|
# CheckHostIP yes
|
||||||
|
# StrictHostKeyChecking no
|
||||||
|
# IdentityFile ~/.ssh/identity
|
||||||
|
# Port 22
|
||||||
|
# Protocol 2,1
|
||||||
|
# Cipher 3des
|
||||||
|
# EscapeChar ~
|
||||||
|
|
||||||
|
# Be paranoid by default
|
||||||
|
Host *
|
||||||
|
ForwardAgent no
|
||||||
|
ForwardX11 no
|
||||||
|
FallBackToRsh no
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if sshd_config exists. If yes, ask for overwriting
|
||||||
|
|
||||||
|
if [ -f "${SYSCONFDIR}/sshd_config" ]
|
||||||
|
then
|
||||||
|
if request "Overwrite existing ${SYSCONFDIR}/sshd_config file?"
|
||||||
|
then
|
||||||
|
rm -f "${SYSCONFDIR}/sshd_config"
|
||||||
|
if [ -f "${SYSCONFDIR}/sshd_config" ]
|
||||||
|
then
|
||||||
|
echo "Can't overwrite. ${SYSCONFDIR}/sshd_config is write protected."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create default sshd_config from here script
|
||||||
|
|
||||||
|
if [ ! -f "${SYSCONFDIR}/sshd_config" ]
|
||||||
|
then
|
||||||
|
echo "Creating default ${SYSCONFDIR}/sshd_config file"
|
||||||
|
cat > ${SYSCONFDIR}/sshd_config << EOF
|
||||||
|
# This is ssh server systemwide configuration file.
|
||||||
|
|
||||||
|
Port 22
|
||||||
|
#Protocol 2,1
|
||||||
|
ListenAddress 0.0.0.0
|
||||||
|
#ListenAddress ::
|
||||||
|
#HostKey /etc/ssh_host_key
|
||||||
|
ServerKeyBits 768
|
||||||
|
LoginGraceTime 600
|
||||||
|
KeyRegenerationInterval 3600
|
||||||
|
PermitRootLogin yes
|
||||||
|
#
|
||||||
|
# Don't read ~/.rhosts and ~/.shosts files
|
||||||
|
IgnoreRhosts yes
|
||||||
|
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
|
||||||
|
#IgnoreUserKnownHosts yes
|
||||||
|
StrictModes yes
|
||||||
|
X11Forwarding no
|
||||||
|
X11DisplayOffset 10
|
||||||
|
PrintMotd yes
|
||||||
|
KeepAlive yes
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
SyslogFacility AUTH
|
||||||
|
LogLevel INFO
|
||||||
|
#obsoletes QuietMode and FascistLogging
|
||||||
|
|
||||||
|
RhostsAuthentication no
|
||||||
|
#
|
||||||
|
# For this to work you will also need host keys in /etc/ssh_known_hosts
|
||||||
|
RhostsRSAAuthentication no
|
||||||
|
|
||||||
|
# To install for logon to different user accounts change to "no" here
|
||||||
|
RSAAuthentication yes
|
||||||
|
|
||||||
|
# To install for logon to different user accounts change to "yes" here
|
||||||
|
PasswordAuthentication no
|
||||||
|
|
||||||
|
PermitEmptyPasswords no
|
||||||
|
|
||||||
|
CheckMail no
|
||||||
|
UseLogin no
|
||||||
|
|
||||||
|
#Uncomment if you want to enable sftp
|
||||||
|
#Subsystem sftp /usr/sbin/sftp-server
|
||||||
|
#MaxStartups 10:30:60
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ask user if user identity should be generated
|
||||||
|
|
||||||
|
if [ "X${HOME}" = "X" ]
|
||||||
|
then
|
||||||
|
echo '$HOME is nonexistant. Cannot create user identity files.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "${HOME}" ]
|
||||||
|
then
|
||||||
|
echo '$HOME is not a valid directory. Cannot create user identity files.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If HOME is the root dir, set HOME to empty string to avoid error messages
|
||||||
|
# in subsequent parts of that script.
|
||||||
|
if [ "X${HOME}" = "X/" ]
|
||||||
|
then
|
||||||
|
HOME=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "${HOME}/.ssh" -a ! -d "${HOME}/.ssh" ]
|
||||||
|
then
|
||||||
|
echo '$HOME/.ssh is existant but not a directory. Cannot create user identity files.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -e "${HOME}/.ssh" ]
|
||||||
|
then
|
||||||
|
mkdir "${HOME}/.ssh"
|
||||||
|
if [ ! -e "${HOME}/.ssh" ]
|
||||||
|
then
|
||||||
|
echo "Creating users ${HOME}/.ssh directory failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${HOME}/.ssh/identity" ]
|
||||||
|
then
|
||||||
|
if request "Shall I create an RSA identity file for you?"
|
||||||
|
then
|
||||||
|
echo "Generating ${HOME}/.ssh/identity"
|
||||||
|
ssh-keygen -f "${HOME}/.ssh/identity"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${HOME}/.ssh/id_dsa" ]
|
||||||
|
then
|
||||||
|
if request "Shall I create an DSA identity file for you? (yes/no) "
|
||||||
|
then
|
||||||
|
echo "Generating ${HOME}/.ssh/id_dsa"
|
||||||
|
ssh-keygen -d -f "${HOME}/.ssh/id_dsa"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Note: If you have used sshd as service or from inetd, don't forget to"
|
||||||
|
echo " change the path to sshd.exe in the service entry or in inetd.conf."
|
||||||
|
echo
|
||||||
|
echo "Configuration finished. Have fun!"
|
Loading…
Reference in New Issue
Block a user