您的位置:首页 > 运维架构

OpenSSH的安装和使用

2017-02-08 11:42 169 查看

OpenSSH的安装和使用

由于许多网络服务(包括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算法。该算法广泛应用于公钥/私钥加密系统。如果要详细了解这方面的内容,可以查找站点:<http://www.rsa.com>

在本文中主要讨论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:/ho
4000
me3/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:89:18:f7:ae:a9 lusan@linux-128 <mailto: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公司的主页(<http://www.vandyke.com>)上去下载。运行目录下的可执行程序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:\temp\up.tar.gz上传到远程主机的/tmp下面,需要使用SecureCRT登陆到该主机然后执行命令:

        $ cd /tmp

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

这时SecureCRT自动弹出对话框,选择D:\temp\up.tar.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:

$<clientside-path-to-ssh>/bin/sftp -1v user@host <mailto:user@host> -s <serverside-path-to-ssh>/libexec/sftp-server

这里的几个参数说明:

-1(数字1):是指明协议的类型

-v(verbose): 显示状态信息

user: 用户名

host: 主机

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

输入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 .

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

<http://www.tac.nyc.ny.us/~kim/ssh/#public-key-crypto>

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程序发送要发送的文件:

$<path-to-kermit>/wermit -s file

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

o 从客户端发送一个文件到服务器端:

用ssh连接服务器,然后运行

$<path-to-kermit>/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 <mailto:usr@host>

参数说明:

-v : 生成调试信息

-P: 指定服务器端的sftp服务器程序的路径

usr: 用户名

host: 服务器ip或主机名

接下来你就可以按提示做了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: