大家好,欢迎来到IT知识分享网。
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:/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: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-0.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或主机名 接下来你就可以按提示做了。 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147699.html