99网
您的当前位置:首页OpenSSH的安装和使用

OpenSSH的安装和使用

来源:99网
由于许多网络服务(包括telnet、ftp、http、rsh、rlogin以及其他服务)都可以被电子窃听,我们必须采用安全的方式进行文件移动、权限设置、shell脚本的运行等等。

为了防止攻击者窃取每天的网络数据,我们可以安装使用Secure Shell(ssh)。这里就向大家具体介绍如何安装和使用ssh服务器和客户端程序。这里说的openssh是一个网上的免费软件。

Open Secure Shell(openssh)是一个安全的登录系统,可以用来替代telnet、rlogin、rcp等。简单的讲,ssh 是一个通过网络登录进入另一台计算机的程序。

我们这里的openssh主要支持的算法是RSA--RSA算法指的是Rivest-Shamir-Adelman算法。该算法广泛应用于公钥/私钥加密系统。如果要详细了解这方面的内容,可以查找站点:

在本文中主要讨论openssh服务器的安装、配置和客户端的配置、使用 一、openssh服务器端的安装及配置 1.服务器端的安装

安装方式主要是三种:

o安装操作系统时候选中要安装“安全服务器”(只有部分操作系统带有此软件包,如红旗linux 2.0服务器版) o rpm包方式安装。 o 源代码方式安装;

a) 安装操作系统时安装

在安装操作系统的时候,在选择软件包的时候,选上“安全服务器”,就会在你的服务器上自动安装好openssh服务器。同时在启动的时候会自动启动sshd的进程。服务器端的配置文件在/etc/ssh/sshd-config中,但是此时你不需要对它进行修改。你要做的仅是在客户机上安装客户端程序。

b) 用rpm包方式安装

在红旗Linux 2.0中需要的rpm包可以从/mnt/cdrom/RedFlag/RPMS(系统安装盘)中获得,它们是:

openssh-2.1.1p4-1.i386.rpm

openssh-clients-2.1.1p4-1.i386.rpm openssh-askpass-2.1.1p4-1.i386.rpm

openssh-askpass-gnome-2.1.1p4-1.i386.rpm openssh-server-2.1.1p4-1.i386.rpm 安装用如下命令:

#rpm -i openssh-2.1.1p4-1.i386.rpm

用同样的方法安装其他的四个rpm包,在和a)相同的路径中存放着你所关心的配置文件,当然sshd的主程序在/usr/sbin下。

c) 源代码方式安装

openssh的安装首先要求在系统中已经安装了zlib和Openssl。所以我们需要的以下的安装包:(这里的版本最好采用最新的) zlib.tar.gz

openssl-0.9.6a.tar.gz

openssh-2.5.2p2.tar.gz

安装步骤如下:

在/home目录下建立source目录,把以上三个源代码包复制到/home/source目录下,分别对各个包解压缩,再进行相应的configure、make和makeinstall。具体命令如下: # mkdir /home/source

# cp zlib.tar.gz openssl-0.9.6a.tar.gz openssh-2.5.2p2

.tar.gz /home/source (接上一行) # cd /home/source # tar zxvf zlib.tar.gz

# tar zxvf openssl-0.9.6a.tar.gz # tar zxvf openssh-2.5.2p2.tar.gz

(注:一般安装linux操作系统的时候都安装了zlib库,故这步不是必须的) # cd /home/source/zlib-1.1.3 # ./configure -s # make # make test

# make install prefix=/usr

# cd /home/source/openssl-0.9.6a # ./configure -prefix=/home/openssl # make # make test # make install

# cd /home/source/openssh-2.5.2p2

# ./configure --with-ssl-dir=/home/openssl --prefix

=/home/openssh (接上一行) # make

# make install

这样openssh的服务器端就安装完毕,进入/home/openssh的目录,下面的目录结构是这样的:

bin/ etc/ libexec/ man/ sbin/

bin/下面存放的是命令集

scp sftp slogin ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

etc/下面存放的是配置文件

libexec/下面存放的是ftp的主程序 man/下面是手册

sbin/下面是ssh的主程序sshd。

2. 配置openssh服务器

在安装完ssh后,下一步就是验证(或是修改,如果是必须的)ssh配置文件中的参数。这些配置文件是:

。/home/openssh/etc/sshd_config (ssh服务器端的配置文件) 。/home/openssh/etc/ssh_config (ssh客户端的配置文件)

sshd_config 是服务器端的配置文件,默认情况下,其内容应该如下:

# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin: /sbin:/home3/ssh/bin

# This is the sshd server system-wide configuration file. See sshd(8) # for more information.

Port 22

#Protocol 2,1

#ListenAddress 0.0.0.0 #ListenAddress ::

HostKey /home3/ssh/etc/ssh_host_key HostKey /home3/ssh/etc/ssh_host_rsa_key HostKey /home3/ssh/etc/ssh_host_dsa_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 /home3/ssh/etc/ssh_known_hosts RhostsRSAAuthentication no

#

RSAAuthentication yes

# To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes PermitEmptyPasswords no

# Comment to enable s/key passwords or PAM interactive authentication # NB. Neither of these are compiled in by default. Please read the # notes in the sshd(8) manpage before enabling this on a PAM system. ChallengeResponseAuthentication no

# To change Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #AFSTokenPassing no

#KerberosTicketCleanup no

# Kerberos TGT Passing does only work with the AFS kaserver #KerberosTgtPassing yes

#CheckMail yes #UseLogin no

#MaxStartups 10:30:60 #Banner /etc/issue.net #ReverseMappingCheck yes

Subsystem sftp /home/openssh/libexec/sftp-server

我们根据自己的需要修改这个配置,但是一般不需要做修改。

3. 公钥/私钥的产生

客户机要连接使用SSH协议的主机,除了要有个用户外,还需要针对这个用户的一对密钥,一个是公钥,一个是私钥。产生它们用如下命令: 下面的粗体字是你要输入的。

$./ssh-keygen (假设当前目录是ssh-keygen所在的目录) Generating public/private rsa1 key pair.

Enter file in which to save the key (/home/lusan/.ssh /identity): Return(回车)

Created directory '/home/lusan/.ssh'.

Enter passphrase (empty for no passphrase): hello world Enter same passphrase again: hello world

Your identification has been saved in /home/lusan/.ssh/identity.

Your public key has been saved in /home/lusan/.ssh/identity.pub. The key fingerprint is:

eb:62:ac:35:54:07:86:74:28:74:cf::18:f7:ae:a9 lusan@linux-128

使用如下命令可以修改公钥/私钥 $ ./ssh-keygen -p

Enter file in which the key is (/home/lusan/.ssh/identity): Return(回车) Enter old passphrase: hello world Key has comment 'lusan@linux-128'

Enter new passphrase (empty for no passphrase): hello Enter same passphrase again: hello

Your identification has been saved with the new passphrase.

接下来要做的就是把公钥复制到服务器端你的$home/.ssl下面,改名为authorized_keys. $ cd ~/.ssh/

$ mv identity.pub authorized_keys

然后把私钥准备给客户端用,如果你要从windows上登陆,则应把这个文件下载到windows中存放。

4. 启动sshd

在设置好相应的配置参数后,以root身份启动sshd了 # /home/openssh/sbin/sshd 此外,sshd是一个守护进程在后台运行,因此,不必须明确地指明它应该在后台运行(sshd&)。

二、客户端的使用

这里客户端的使用有两种情况:在linux下和windows下 1. 在linux下

在你自己的linux机器上,按照一、的快速安装的方法安装好openssh的程序,当然可以选定你自己想要安装的目录。不需要修改ssh_config这个配置文件。你要做的就是把服务器端生成的私钥identity文件复制到$(HOME)/.ssh/下。设置这个文件的权限为只允许自己访问。 $cp identity $(HOME)/.ssh/

$chmod go-rwx $(HOME)/.ssh/identity

然后你就可以这样登录了: $ ./ssh -l lusan 192.168.43.128

(这时候使用的私钥默认是$(HOME)/.ssh/identity)。你可以在你的客户端的配置文件中指明多个私钥的名称(为了连接多个站点),如: IdentityFile ~/.ssh/identity.tjyd IdentityFile ~/.ssh/identity.xydx 等,或者也可以使用:

$ ./ssh -l lusan -i~/.ssh/identity.tjyd xxx.xxx.xxx.xxx 指定一个私钥文件。

可以看用ssh -h 看ssh的更多具体使用方法

Enter passphrase for RSA key 'lusan@linux-128': hello Last login: Thu Apr 12 14:44:05 2001 from lujf 显示信息表示你登录成功。 粗体字是你要输入的。

2. 在windows下 这里介绍两种软件。

1)SecureCRT

SecureCRT是一种支持SSH协议的远程登陆工具,最新版本可到Van Dyke公司的主页()上去下载。运行目录下的可执行程序SecureCRT.EXE即可启动,从菜单File/New中可以建立一个新的session,需要填写的相关内容是: Name:为这个会话起个名称

Protocol:有telnet,rlogin,ssh1等等,连接到使用ssh1协议的主机时要选择ssh1 Hostname:IP地址或主机名

Port:使用ssh1协议时一般是缺省的22 Username:用来登陆的用户名 Cipher:口令加密方法,选3DES

Authentication:要选择RSA,注意缺省的是Password

然后点“Advanced”按钮,Identity filename选择“Use session-specified”,并通过浏览按钮选中前面对应的私钥文件(需要先把它下载到本地硬盘来)

设置好后连接主机时,输入对应于该用户的密码(Cipher)即可。

2)Tera Term Pro + TTSSH for Windows

两个软件包是:ttermp23.zip,ttssh154.zip

分别对他们解压缩。进入ttermp23的目录。运行setup程序进行安装。然后把ttssh154目录下的所有文件拷贝到ttermp23的安装目录里面。然后运行ttermp23安装目录中的ttssh.exe,选择登录主机ip和ssh登录方式,按确定后,要输入的是: username :lusan(username) passphrase: hello

然后选择use RSA key to login in: 这里选择你的私钥文件(即在linux服务器上生成的$(HOME)/.ssh/identity文件。 这样你就完成登录过程了。 如果你是第一次登录:会提示:

Host key not found from the list of know hosts.

Are you sure you want to continue connecting(yes/no)? 选择yes。

三、通过Zmodem协议传输文件

需要在远程主机上有两个程序lrz和lsz,前者用于上传,后者用于下载,软件可以到网上搜索得到;这里只介绍配合SecureCRT的用法:

1.上传文件

比如要将D:\emp\r.gz上传到远程主机的/tmp下面,需要使用SecureCRT登陆到该主机然后执行命令:

$ cd /tmp

$ /home/tools/lrz (假设lrz放在/home/tools下)

这时SecureCRT自动弹出对话框,选择D:\emp\r.gz,然后按“Add”按钮加到待传输的文件列表中,关闭该窗口后文件就开始上传到当前目录/tmp下了。可以一次选择多个文件批量上传。 2.下载文件

比如要下载远程主机的文件/tmp/down.tar.gz,用SecureCRT登陆到该主机然后执行: $ cd /tmp

$ /home/tools/lsz -b down.tar.gz

(假设lsz在/home/tools下) 参数-b指定传输二进制文件,更详细的用法可以用命令lsz --help察看,命令发出后SecureCRT即开始下载,并把文件存放到SecureCRT所在目录的子目录download中,这个缺省的存放目录可以从菜单Option/Session options/File Transfer中更改。 四、sftp的使用

这里我们再简单介绍一下sftp (secure ftp)的安装和使用。前面在介绍sshd(ssh服务器端)的配置文件的时候,在sshd-config的最后一行有: subsystem sftp /home3/ssh/libexec/sftp-server

这个语句。是说把sftp作为sshd的一个子系统来运行的。

1. 在linux环境下

安装上述步骤安装好ssh客户端之后,就可以进行secure ftp: $/bin/sftp -1v user@host /libexec/sftp-server 这里的几个参数说明: -1(数字1):是指明协议的类型 -v(verbose): 显示状态信息 user: 用户名 host: 主机

-s : 发送到服务器端启动sftp-server

-s

输入passphrase后,就进入sftp>的提示符,就下来的用法就和ftp一样了。可以通过help命令查看各种用法。

在linux下还可以用scp进行文件传输,scp就是Secure Copy( 远程文件安全拷贝程序),scp 利用透明的认证和加密方式在主机间(当然也可以在本机上)进行文件拷贝。只要条件允许,请使用scp来移动文件。

scp 的语法为:scp usr@host1: filename usr@host2:filename 如: $./scp lusan@192.168.43.128:/home/lusan/.bash_profile .

这里给初学者提供一个比较好的站点:

2.在windows下

使用Tera Term中的kermit协议的receive方式和send方式进行接收和发送。这时候必须在

ssh的服务器端提供kermit服务。

这里先介绍kermit服务端的安装使用(源代码方式): 得到kermit的安装包:kermit-7.0-1.src.rpm 解开rpm包,得到kermit的源代码: #rpm - i kermit-7.0-1.src.rpm

然后你可以在/usr/src/redflag/SOURCES下有如下两个文件:cku196.tar.Z和dummy.xpm 编译执行码:

#mkdir /home/kermit

#cp /usr/src/redflag/SOURCES/cku196.tar.Z /home/kermit #cp /usr/src/redflag/SOURCES/dummy.xpm /home/kermit #cd /home/kermit #tar Zxvf cku196.tar.Z #make

在/home/kermit下生成有wermit这个可执行程序。可以通过wermit -h看它的使用方法。 o 从服务端发送一个文件给客户端接收:

首先用Tera Term通过ssh协议连接服务器,然后用wermit程序发送要发送的文件: $/wermit -s file

在Tera Term的终端上出现:KERMIT READY TO SEND …的信息,然后在Tera Term终端的file菜单中选“change directory”选项,选定你要存放接收到文件的目录。最后选择file菜单中的Transfer中的Kermit中Receive选项,就出现接收状态。完毕之后就可以在你选定的目录中看到你要接收的文件。

o 从客户端发送一个文件到服务器端: 用ssh连接服务器,然后运行 $/wermit -r

然后在选file菜单中的Transfer中的Kermit中的send,出现一个选择要发送文件的对话框。选定之后出现传输进度状态,完毕后就可以在你执行 wermit的目录中找到你刚才发送的文件。

以上这些功能就完成了sftp的功能。

3.在dos环境下的sftp

首先 在服务器端要装一个sftp的服务程序 得到sftp-0.9.6.tar.gz软件包,解压缩,编译。 $cp sftp-0.9.6.tar.gz /home/ $cd /home

$tar zxvf sftp-0.9.6.tar.gz $cd sftp-0.9.6

$./configure -prefix=/home/sftp $make

在/home/sftp目录下生成sftp,rsftp和sftpserv几个可执行程序即可。

然后,得到客户程序软件包:sftp-0.9.6-01032001.zip。解压缩到到某个目录。在这个目录中就有sftp.exe的文件。你可以使用sftp -h 看它的使用帮助。但是有一点,这是一个仿linux

的程序。在运行sftp等程序之前,必须在你的pc机上设置一个home目录,然后在home目录下建立一个.ssh目录,再把针对某个服务器的identity文件拷贝到该.ssh目录下(私钥文件名称必须为identity)。 比如:

c:\\>md linux-128 c:\\>md linux-128\\.ssh

c:\\>copy identity linux-128\\.ssh

(注意这里的私钥必须命名为identity, 是服务器端生成的私钥, 先下载到本地) c:\\>set home=c:\\linux-128

(环境变量可以在autoexec.bat中设置, 以便启动就生效)这样就为连接linux-128建立了一个home环境

在完成以上步骤后就可以进行sftp的连接: 进入客户程序解压缩的目录,然后执行:

prompt>sftp -v -P /home/sftp usr@host 参数说明:

-v : 生成调试信息

-P: 指定服务器端的sftp服务器程序的路径 usr: 用户名

host: 服务器ip或主机名 接下来你就可以按提示做了

因篇幅问题不能全部显示,请点此查看更多更全内容