- 浏览: 93655 次
文章分类
最新评论
SSH服务
最近刚刚接手的项目上面使用的是SSH协议访问远程主机,所以要研究下SSH这个!
S<wbr>S<wbr>H<wbr>的<wbr>英<wbr>文<wbr>全<wbr>称<wbr>为<wbr>S<wbr>e<wbr>c<wbr>u<wbr>r<wbr>e<wbr><wbr>S<wbr>h<wbr>e<wbr>l<wbr>l<wbr>,<wbr>是<wbr>I<wbr>E<wbr>T<wbr>F<wbr>(<wbr>I<wbr>n<wbr>t<wbr>e<wbr>r<wbr>n<wbr>e<wbr>t<wbr><wbr>E<wbr>n<wbr>g<wbr>i<wbr>n<wbr>e<wbr>e<wbr>r<wbr>i<wbr>n<wbr>g<wbr><wbr>T<wbr>a<wbr>s<wbr>k<wbr><wbr>F<wbr>o<wbr>r<wbr>c<wbr>e<wbr>)<wbr>的<wbr>N<wbr>e<wbr>t<wbr>w<wbr>o<wbr>r<wbr>k<wbr><wbr>W<wbr>o<wbr>r<wbr>k<wbr>i<wbr>n<wbr>g<wbr><wbr>G<wbr>r<wbr>o<wbr>u<wbr>p<wbr>所<wbr>制<wbr>定<wbr>的<wbr>一<wbr>族<wbr>协<wbr>议<wbr>,<wbr>其<wbr>目<wbr>的<wbr>是<wbr>要<wbr>在<wbr>非<wbr>安<wbr>全<wbr>网<wbr>络<wbr>上<wbr>提<wbr>供<wbr>安<wbr>全<wbr>的<wbr>远<wbr>程<wbr>登<wbr>录<wbr>和<wbr>其<wbr>他<wbr>安<wbr>全<wbr>网<wbr>络<wbr>服<wbr>务<wbr>。<wbr>可<wbr>以<wbr>简<wbr>单<wbr>理<wbr>解<wbr>为<wbr>:<wbr>R<wbr>l<wbr>o<wbr>g<wbr>i<wbr>n<wbr>和<wbr>T<wbr>e<wbr>l<wbr>n<wbr>e<wbr>t<wbr>等<wbr>的<wbr>替<wbr>代<wbr>方<wbr>案<wbr>。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
7.2.1 SSH协议简介
SSH的英文全称为SecureShell,是IETF(Internet Engineering Task Force)的Network Working Group所制定的一族协议,其目的是要在非安全网络上提供安全的远程登录和其他安全网络服务。可以简单理解为:Rlogin和Telnet等的替代方案。
SSH 协议在预设状态中提供两个服务器功能:
●类似telnet的远程联机使用 shell 的服务器,即ssh;
●类似FTP服务的sftp-server,提供更安全的 FTP 服务。
1. SSH基本框架
SSH协议框架中最主要的部分是三个协议:传输层协议、用户认证协议和连接协议。同时SSH协议框架中还为许多高层的网络安全应用协议提供扩展的支持。它们之间的层次关系可以用如下图7-1来表示:
图7-1 SSH协议的层次结构示意图
在SSH的协议框架中,传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性等的支持;用户认证协议(The User AuthenticationProtocol) 则为服务器提供客户端的身份鉴别;连接协议(The Connection Protocol)将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用;各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连 接协议使用SSH的安全机制。
SSH的安全验证是如何工作的
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)
只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密, 但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器, 也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)
需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。 如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。 客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。
第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程需要的时间稍微较长。
2 SSH数据加密方式
网络封包的加密技术通常由“一对公钥与私钥”(即“Public and Private keys”)进行加密与解密的操作。主机端要传给客户端(client)的数据先由公钥加密,然后才在网络上传输。到达客户端后,再由私钥将加密的资料解密。经过公钥(publick key)加密的数据在传输过程中,由于数据本身经过加密,即使这些数据在途中被截取,要破解这些加密的数据,需要花费好长一段时间。
3. SSH版本
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。
SSH protocol version 1
每一部SSH服务器主机都可以用RSA加密方式产生一个1024-bit的RSA Key,这个RSA的加密方式主要用来产生公钥与私钥的演算方法。
version 1的整个联机加密步骤:
当每次SSH daemon(sshd)启动时,产生768-bit的公钥(或称为server key)存放在Server 中;若有客户端的ssh联机需求传送来时,Server将这公钥传给客户端。
此时,客户端比对该公钥的正确性。比对的方法是利用/etc/ssh/ssh_known_hosts或~/.ssh/known_hosts 档案内容。
在客户端接受该768-bit的server key后,客户端随机产生256-bit的私钥(host key),并且以加密方式将server key与host key整合成完整的Key,并将该Key传送给server;
Server与客户端在本次联机中以该1024-bit的Key进行数据的传递。由于客户端每次256-bit的Key是随机取的,因而本次联机与下次联机的Key可能不一样。
SSH protocol version 2
SSH version 1的联机中,Server单纯的接受来自客户端的privatekey,如果在联机过程中privatekey被取得后,cracker 就可能在既有的联机当中插入一些攻击码,使得联机发生问题。
为了改进这个缺点,在SSH version 2中,SSH server不再重复产生server key,而是在与客户端建立private key时,利用Diffie-Hellman的演算方式, 共同确认来建立private key,然后将该private key与public key组成一组加解密的金钥。同样,这组金钥也仅是在本次的联机中有效。
透过这个机制可见,由于server/client两者之间共同建立了private key,若private key落入别人手中,由于server端还会确认联机的一致性,使cracker没有机会插入有问题的攻击码。即ssh version 2 是比较安全的。
7.2.2 SSH常用操作
1. 启动 SSH 服务
Linux 系统中,预设含有SSH的所有需要的套件,包含可以产生密码等协议的OpenSSL套件与OpenSSH套件,直接启动即可使用。
以SSH daemon(简称 sshd)手动启动的步骤如下:
[root@localhost ~]# /etc/init.d/sshdrestart
[root@localhost ~]# netstat -tlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp0 0 *:ssh *:* LISTEN 24
启动后,利用netstat查阅sshd 程序是否正确的在LISTEN即可。这时,SSH服务器设定值均是系统默认值,能否仅用较安全的version 2 ,需要进一步的设定。
如果想在开机即启动SSH,用chkconfig设定开机启动即可。
[root@localhost ~]#chkconfig sshd on
⑴Linux Client:ssh
SSH在客户端使用ssh指令,该指令可以指定联机的版本 (version1或version2), 还可以指定非正规的ssh port(正规ssh port为22)。
一般的用法:
①直接登入到对方主机:
[root@localhost ~]# ssh account@hostname
# 范例:
# 连接到我们自己本机上面的 ssh 服务
[root@localhost ~]# ssh dmtsai@localhost
The authenticity of host 'localhost(127.0.0.1)' can't be established.
RSA key fingerprint isf8:ae:67:0e:f0:e0:3e:bb:d9:88:1e:c9:2e:62:22:72.
Are you sure you want to continueconnecting (yes/no)? yes
#务必填入完整的 "yes" 而不是 Y 或 y 而已。
Warning: Permanently added 'localhost'(RSA) to the list of known hosts.
dmtsai@localhost's password:
Last login: Fri Jul 1 14:23:27 2005 from localhost.localdomain
[dmtsai@linux ~]$
[dmtsai@linux ~]$ exit <== 输入 exit 就能够离开对方主机
②不登入对方主机,直接在对方主机执行指令:
[root@localhost ~]# ssh dmtsai@localhostdate
dmtsai@localhost's password:
Tue Nov 22 11:57:27 CST 2005
[root@localhost ~]#
[root@localhost ~]# vi ~/.ssh/known_hosts
localhost ssh-rsaAAAAB3NzaC1yc2Euowireffodjoiwjefmoeiwhoqhwupoi
t[egmlomowimvoiweo6VpTHTw2/tENp4U7Wn8J6nxYWP36YziFgxtWu4MPSKaRmr
E4eUpR1G/zV3TkChRZY5hGUybAreupTVdxCZvJlYvNiejfijoejwiojfijeoiwx5
eRkzvSj7a19vELZ5f8XhzH62E=
7.2.3 SSH项目配置
任务1.配置SSH服务,提供本地用户远程SSH口令登录。
[系统及软件环境]
1. 操作系统:Red Hat AS 5.0
2. 本机服务IP地址:10.1.6.250/24
3. 服务器软件包:
1) openssh-4.3p2-16.el5
2) openssh-askpass-4.3p2-16.el5
3) openssh-clients-4.3p2-16.el5
4) openssh-server-4.3p2-16.el5
[实验配置文件及命令]
1./etc/ssh/sshd_config
[操作步骤]
[root@localhost ssh]# rpm -qa |grep ssh openssh-4.3p2-16.el5 openssh-askpass-4.3p2-16.el5 openssh-clients-4.3p2-16.el5 openssh-server-4.3p2-16.el5 |
2.安装ssh服务器软件包。(首先需要进入到所在软件包目录)
[root@localhost RPMS]# rpm -ivh openssh-* --aid --force warning: openssh-3.9p1-8.RHEL4.1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### # [100%] 1:openssh ############################################# [ 20%] 2:openssh-askpass ############################################# [ 40%] 3:openssh-askpass-gnome #########################################[ 60%] 4:openssh-clients ############################################## [ 80%] 5:openssh-server ############################################## [100%] |
3.修改/etc/ssh/sshd_config。
(1)默认设置的/etc/ssh/sshd_config文件(其中#号注释掉的内容未显示)
[root@localhost ssh]# grep -v "#" /etc/ssh/sshd_config SyslogFacility AUTHPRIV PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes X11Forwarding yes Subsystem sftp /usr/libexec/openssh/sftp-server |
(2)按要求修改后的/etc/ssh/sshd_config文件(修改处用黑体标明)。
Port 22 //默认为22(如果需要,可以进行修改服务端口号,比如:4444) Protocol 2 //只允许ssh2协议工作,提高安全性 SyslogFacility AUTHPRIV PermitRootLogin yes //如果不允许root用户远端登录,则改为no PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes X11Forwarding yes MaxStartups 10 #将准备连接的最大允许数设为10,防止拒绝服务攻击 Subsystem sftp /usr/libexec/openssh/sftp-server |
4.重启ssh服务,并测试是否启动成功。
root@localhost ~]# service sshd restart //或者用/etc/rc.d/init.d/sshd restart 启动 sshd [确定] 停止 sshd [确定] [root@localhost ~]# ssh supsun@10.1.6.250 //如果需要指定端口号4444,则加 –p 4444 The authenticity of host '10.1.6.250 (10.1.6.250)' can't be established. RSA key fingerprint is ef:e0:6a:28:7c:f6:14:b6:fa:56:66:1f:7f:91:42:1c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.1.6.250' (RSA) to the list of known hosts. supsun@10.1.6.250's password: Last login: Sun Aug 1 09:07:05 2010 from 10.1.6.238 [supsun@localhost ~]$ |
任务2.配置SSH服务,提供基于密匙的登录,要求RSA加密算法进行加密,不需要输入密匙即可实现远程登录。
[操作步骤]
//说明:本任务是在(任务1)的基础上进行配置。
1.生成需要登录的用户
[root@localhost ~]# useradd testuser [root@localhost ~]# passwd testuser Changing password for user testuser. New UNIX password: //输入密码123456 BAD PASSWORD: it is too simplistic/systematic Retype new UNIX password: //输入密码123456 passwd: all authentication tokens updated successfully. [root@localhost ~]# |
2.生成用户密匙对
[root@localhost ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): //此处直接回车 Enter passphrase (empty for no passphrase): Enter same passphrase again: //此处直接回车 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 4a:10:42:21:79:3e:2c:73:23:6e:e9:fe:a0:a0:a0:c4 root@localhost.localdomain [root@localhost ~]# |
3.拷贝密匙
[root@localhost ~]# mkdir /home/testuser/.ssh/ //创建登录用户环境 [root@localhost ~]# cd ~/.ssh/ [root@localhost .ssh]# ls id_rsa id_rsa.pub [root@localhost .ssh]# scp id_rsa.pub testuser@10.1.6.250:/home/testuser The authenticity of host '10.1.6.250 (10.1.6.250)' can't be established. RSA key fingerprint is ef:e0:6a:28:7c:f6:14:b6:fa:56:66:1f:7f:91:42:1c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.1.6.250' (RSA) to the list of known hosts. testuser@10.1.6.250's password: //此处要输入testuser用户密码123456 id_rsa.pub 100% 408 0.4KB/s 00:00 [root@localhost .ssh]# cd /home/testuser/ [root@localhost testuser]# cp id_rsa.pub .ssh/authorized_keys |
4.完成登录测试
[root@localhost ~]# ssh testuser@10.1.6.250 //此处不需要输入密码,直接登录,表示成功 [testuser@localhost ~]$ w //查看登录情况 10:22:12 up 1:53, 4 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 08:40 1:32m 0.05s 0.05s -bash root pts/0 :0.0 08:54 1:15m 0.05s 0.05s bash supsun pts/1 10.1.6.238 09:07 0.00s 0.53s 0.15s sshd: supsun [p Testuser pts/2 10.1.6.250 10:22 0.00s 0.05s 0.02s w [testuser@localhost ~]$ |
任务3.利用第三方软件PUTTY,在WINDOWS 下实现LINUX系统的远程登录。
[软件环境]
1、PUTTY.EXE
[操作步骤]
1、启动windows 客户端软件putty,输入目标主机IP地址,如图7-2。
图7-2 启动putty
2、修改登录字体。选择Windows选项的Appearance选项,选择Font setting的Chang…按钮,修改字形和大。如图7-3、图7-4。
图7-3 putty字体设置
图7-4putty字体设置
3、修改登录支持中文设置。选择Windows选项的Translation选项,选择Use font encoding的下拉列表,选择UTF-8,如图7-5。
图7-5 设置接受中文字体
4、修改等率颜色配比设置,如图7-6。
图7-6 颜色配比设置
5、完成用户登录,如图7-7。
图7-7 用户登录
7.2.4 SSH服务配置常见故障与常规配置参数解析
1、下面的表格中列出了在实验过程中可能出现的故障及其解决方法。
序号 |
实验故障 |
分析与解决 |
1 |
无法登录 |
可能是ssh服务未启动 |
2 |
root用户无法登录 |
可能是PermitRootLogin参数设为了no |
3 |
远程ssh服务器已经启动成功,但无法连接到远程的ssh服务器 |
远程ssh服务器对应主机的防火墙没有关闭。可采用service iptables stop命令关闭 |
2、ssh服务的主配文件/etc/ssh/sshd_confg常规参数说明
VersionAddendum TecZm-20050505 #在telnet ip 22时只能看出openssh的版本,看不出OS Port 22 #sshd监听22端口 ListenAddress 192.168.7.1 #sshd只监听目标ip为192.168.7.1的请求 AllowGroups wheel myguest #允许wheel组和myguest组的用户登录 AllowUsers teczm authen@192.168.8.5 #允许来自以上组的teczm用户和authen用户登录, #且authen用户只能从主机192.168.8.5登录 #DenyGroups #拒绝登录的组,参数设置和AllowGroups一样 #DenyUsers #拒绝登录的用户,参数设置和AllowUsers一样 #AllowTcpForwarding yes #是否转发的TCP包都被允许。默认是 ``yes''。 LoginGraceTime 60 #60秒内客户端不能登录即登录超时,sshd切断连接。 KeyRegenerationInterval 1800 #1800秒(30分钟)后自动重新生成服务器的密匙。 MaxStartups 3 #设置同时发生的未验证的并发量,即同时可以有几个 UseDNS no #不使用DNS查询客户端。 PermitRootLogin no #不允许root登录,root可由wheel组用户登录后su。 X11Forwarding no #禁止用户运行远程主机上的X程序。 UseLogin yes #禁止X11Forwarding #认证配置(口令认证、PAM认证、非对称密钥认证任选其一) #口令认证 PubkeyAuthentication no #不使用非对称密钥认证 PasswordAuthentication yes #使用口令认证 PermitEmptyPasswords no #不允许使用空密码的用户登录 #PAM认证 PasswordAuthentication no #不使用口令认证 UsePAM #使用pam认证 ChallengeResponseAuthentication yes #允许挑战应答方式 #非对称密钥认证 PasswordAuthentication no #不使用口令认证 PubkeyAuthentication yes #使用非对称密钥认证 AuthorizedKeysFile .ssh/authorized_keys #用户认证使用的公钥。
|
相关推荐
(1)Server State中确保SSH服务已打开 如果此处出现不能打开的情况,在SSH界面将Start SSH server on free SSHd startup前边的勾去掉,如图: (2)进入Users界面,Add一个新用户,如slave. Authorization选择公钥...
本工具一键运行安装ssh服务到windows系统中,实现通过ssh客户端软件远程管理windows服务器,同时内置类linux命令工具,如果你习惯用linux命令,那么你可以用管理linux的方式来管理windows系统,简单易用。...
Linux操作系统应用:第6章配置网络和使用ssh服务.pptx
ssh默认安装在/usr/local/sbin/目录下,使用 /usr/local/sbin/sshd 启动ssh服务,该服务默认侦听22端口。 5、检查ssh服务是否启动: netstat -tnlp|grep :22 最后,ubuntu如果重启后,sshd默认是不会开机启动的...
ssh服务 ssh服务 ssh 服务 ssh服务 ssh服务 ssh 服务
在Cisco路由器上配置SSH服务.pdf
基于海思hi3531D的ssh服务器的搭建,采用zlib+dropbear的工具结合的方式,具有占用空间小,稳定性好等优点,亲测流程可用,含详细流程截图。
由于工作需要使用SSH协议进行通信,经过几天研究和网上资料的参考学习成功搭建了SSH服务器,并使用公匙进行登陆。为了使读者少走弯路,特把相关经验进行总结和罗列,希望对用户有所帮助。资源内包含所需软件和相关...
非常详细的讲解ubuntu下开启ssh服务。百分之百开启。借鉴很多人,做出最优的傻瓜配置
docker配置ssh服务,初学者可以作为参考的,自学整理的文档
嵌入式Linux SSH服务搭建 编译好的ssh 目录/Source/openssh-4.6p1为编译后的文件 版本:openssh-4.6p1、openssl-0.9.8f、zlib-1.2.3
freeSSHd,在win10上可以安装ssh服务
Linux基础 电子教材-08-Linux中的ssh服务和web服务.pdf 学习资料 复习资料 教学资源
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样\"中间人\"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以...
PyRexecd 用于Windows的独立SSH服务器
一个连接到SSH服务器的网络文件系统客户端
开发板为i.MX6UL。内核版本为3.14.38。交叉编译工具链为:arm-fsl-linux-gnueabi-gcc。亲自编译并测试可行。压缩包中包含部署文件和详细教程,可直接部署。
sshdroid 安装在安卓上的ssh服务器
在CentOS7下,设置ssh自启动,修改ssh监听端口
ssh服务器,把Windows变成ssh机让其他机器ssh访问,请看教程自己搜