[ This document is courtesy of Mr. Hirotaka Yamamoto.
PLEASE don't send him bug-reports about ssh. Send them
to
[email protected].
Sami Lehtinen <
[email protected]> ]
SSH2 Quick Start
September 22, 1998
Table of Contents:
1. About SSH
2. Compatibility with SSH1
3. Building & Installing
4. System Configuration
5. Per-User Configuration
6. Using with SSH1
0. About This Document
This document gives a short description on how one can make SSH2 (SSH
version 2) compatible with SSH1 (SSH version 1) and can install and
configure SSH2. All descriptions are based on SSH version 2.0.9, which
was the latest as of Sep. 22, 1998. Building, installing,
configuring, and testing is done on RedHat Linux 5.1, Debian 2.0, and
Solaris2.5.1 operating systems.
No Warranty
This document is opened in the hope that it will be useful for many
novices, but WITHOUT ANY WARRANTY EXPRESSED OR IMPLIED.
Re-Distribution
Permission to modify this document and to distribute it is hereby
granted, as long as above notices and copyright notice are retained. I
will appreciate your notice of modification.
1. About SSH
SSH is a truly seamless and secure replacement of old, insecure
remote login programs such as rlogin or rsh. According to the
official SSH (Secure SHell) site, SSH is "the secure login program
that revolutionized remote management of networks hosts over the
Internet. It is a powerful, very easy-to-use program that uses strong
cryptography for protecting all transmitted confidential data,
including passwords, binary files, and administrative commands.", and
SSH2 is "the sequel to the award winning SSH1 protocol. It provides a
set of radical improvements to SSH1."
You can obtain SSH2 & SSH1 clients and servers in binaries or in
source from the master FTP server, or from its mirrors.
2. Compatibility with SSH1
SSH2 can be compatible with SSH1, but is NOT compatible by
default. First, SSH2 requires clients and a server of SSH1 to be
compatible. You will need to obtain and install SSH version 1.2.26 or
later. For the version 1.2.23 and probably any previous releases of
SSH1 did NOT work with SSH2 in our testing. I don't know about
versions 1.2.24 and 1.2.25. Upgrade to the latest SSH1 before
installing SSH2.
After installing proper versions of SSH1 and SSH2, now you should edit
SSH2's configuration files, which are normally placed at the directory
"/etc/ssh2/". The configuration is described later.
3. Building and Installing
The process of building and installing SSH (either version 1.2.26 or
2.0.9) is fairly straightforward. Have you already got SSH sources?
Download them first. The tar-balls have been signed by PGP. Verify
your sources if you worry. Below I describe the process briefly. For
more details, please read README files in the source archives.
Unpack your SSH1 sources, like
> gzip -dc ssh-1.2.26.tar.gz | tar xvpf -
This will create a directory "ssh-1.2.26".
Configure the archive and then make binaries, like
> cd ssh-1.2.26
> ./configure; make
If you need to force a particular compiler, you can define
the compiler (in this case, cc instead of gcc) on the command
line:
> CC=cc ./configure; make
Become a super-user and install binaries, configuration files,
and hostkey by typing
> su
# make install
This will normally install clients (ssh1, slogin1, ...) to
"/usr/local/bin", and a server (sshd1) to "/usr/local/sbin".
Notice that the programs that have no trailing "1" in its name
(i.e., ssh, slogin, sshd, ...) are symbolic links to the real
executables (ssh1, slogin1, sshd1, ...).
Installing SSH2 is much the same process, say
> gzip -dc ssh-2.0.9.tar.gz | tar xvpf -
> cd ssh-2.0.9
> ./configure; make
> su
# make install
This will normally install clients (ssh2, slogin2, ...) to
"/usr/local/bin", and a server (sshd2) to "/usr/local/sbin".
The symbolic links (ssh, slogin, sshd, ...) have been changed
to direct new SSH2 counterparts (ssh2, slogin2, sshd2, ...)
during the install process.
> ls -l /usr/local/bin/ssh
lrwxrwxrwx 1 root staff 4 Sep 21 18:27 /usr/local/bin/ssh -> ssh2
4. System Configuration
The default configuration is mostly reasonable for ordinary purposes,
but it lacks compatibility with SSH1. Add the following 2 lines to
sshd2_config placed at "/etc/ssh2" (or where you installed it). With
this configuration, sshd2 server will forward requests from SSH1
client to sshd1.
Ssh1Compatibility yes
Sshd1Path /usr/local/sbin/sshd1
Replace "/usr/local/sbin" with the directory where you installed sshd1
server. Then add the following 2 lines to ssh2_config placed at the
same directory of sshd2_config. With this configuration, ssh2 client
will invoke ssh1 client when contacting SSH1 server.
Ssh1Compatibility yes
Ssh1Path /usr/local/bin/ssh1
Replace "/usr/local/bin" with the directory where you installed ssh1
client. Consult the manual pages of sshd and ssh for other
configurations.
5. Per-User Configuration
User configuration of SSH2 becomes smarter than that of SSH1. Now
public keys are stored in separate files and one can have multiple
host-specific identifications (i.e., private keys). Read the ssh
manual page for details. Here I describe most basic usage of
SSH2. When you want to login to a remote host (Remote) from a local
computer (Local) using SSH2, you do:
1. Create private & public keys of Local, by executing
ssh-keygen (ssh-keygen2) on Local.
Local> ssh-keygen
Generating 1024-bit dsa key pair
9 o.oOo..oOo.o
Key generated.
1024-bit dsa, created by ymmt@Local Wed Sep 23 07:11:02 1998
Passphrase :
Again :
Private key saved to /home/ymmt/.ssh2/id_dsa_1024_a
Public key saved to /home/ymmt/.ssh2/id_dsa_1024_a.pub
ssh-keygen will ask you a passphrase for new key. Enter a
sequence of any ordinal character (white spaces are OK) of proper
length (20 characters or so). ssh-keygen creates a ".ssh2"
directory in your home directory, and stores a new
authentication key in two separate files. One is your private
key and thus it must NOT be opened to anyone but you. In above
example, it is id_dsa_1024_a. The other (id_dsa_1024_a.pub) is
a public key that is safe to be opened and to be distributed
to other computers.
2. Create an "identification" file in your ".ssh2" directory on Local.
Local> cd ~/.ssh2
Local> echo "IdKey id_dsa_1024_a" > identification
This will create a file "identification" in your ".ssh2"
directory, which has one line that denotes which file
contains your identification. An identification
corresponds a passphrase (see above). You can create
multiple identifications by executing ssh-keygen
again, but rarely you should.
3. Do the same thing (1, and optionally 2) on Remote.
This is needed just to setup ".ssh2" directory on
Remote. Passphrase may be different.
4. Copy your public key of Local (id_dsa_1024_a.pub) to ".ssh2"
directory of Remote under the name, say, "Local.pub".
".ssh2" on Remote now contains:
Remote>ls -F ~/.ssh2
Local.pub
authorization
hostkeys/
id_dsa_1024_a
id_dsa_1024_a.pub
identification
random_seed
5. Create an "authorization" file in your ".ssh2" directory on
Remote. Add the following one line to "authorization",
Key Local.pub
which directs SSH server to see Local.pub when
authorizing your login. If you want to login to
Remote from other hosts, create authorization keys on
the hosts (step 1 and 2) and repeat step 4 and 5 on
Remote.
6. Now you can login to Remote from Local using SSH2!
Try to login:
Local>ssh Remote
Passphrase for key "/home/ymmt/.ssh2/id_dsa1024_a" with
comment "1024-bit dsa, created by ymmt@Local Mon Sep 21
17:53:01 1998":
Enter your passphrase on Local, good luck!
6. Using with SSH1
Your users may insist that they use old SSH1 clients after you
installed SSH2. Here are some notices about it.
Server
sshd2 server will forward SSH1 clients to sshd1, so users
who want to connect SSH2 server with SSH1 protocol should
explicitly use ssh1 command.
Clients
Users of SSH1 should also use ssh-keygen1, ssh-agent1 and
ssh-add1.
In short, use ssh*1 explicitly.
Comments and suggestions are welcome.
Copyright (C) 1998 Hirotaka Yamamoto <
[email protected]>