OpenSSH,一种用于远程登录的应用程序;登录是指在一个系统中拥有在这个系统中运行的一个用户的身份,当用户满足登录到这个系统的一个口令时即可正常登录;为什么要使用OpenSSH呢?
Telnet是一种远程登录工具,他是系统自带的,但是Telnet在数据传输过程当中是以明文的形式传输的,这样就很容易被有心人抓包破解重要信息;而OpenSSH这种远程登录程序,他的所有传输过程都是加密的过程;这样就加大了中间人攻击的难度,它可以动态的设置加密密码,如dsa,rsa,ecdsa等;
SSH有两个版本,一个是SSH V1,一个是SSH V2;但是SSH V1在运行环节出现了很多严重的问题,所以一般不会有人去使用,如果一意孤行去使用,中间出新问题也只能自己去承担,支持使用的是V2版本的;SSH远程登录有两种方式,一种是基于口令的认证,即根据用户密码登录,一种是基于密钥对的形式,由客户端生成一对密钥对,私钥保存在客户端;将公钥发送给服务器中的某个用户的家目录中;当客户端要登录到服务器中的用户时,服务器通过公钥解密数据判断数据来源,来源正确则登录;
SSH口令认证:
ssh命令:
ssh [options]...[[email protected]]hostname [command]
常用选项:
-l user:指定此次使用哪个用户进行远程登录;,如果使用了此选项,则ssh
命令中的主机名前面的用户名需要省略;若如果没有使用-l选项指定用户,又没有 在主机名前面加上用户名,则ssh客户端程序默认使用本地主机当前登录的用户的用 户名作为此次登录的用户名;
-p port:指名用于访问远程服务器的目标端口号
实例:
处于centos7环境下的终端,经过远程登录命令ssh登录到了centos6.7的终端,可以看到的是,当 我们第一次远程登录时,他会让我们确认一下是否登录,下一次再登录时,就只需要输入用户密码即 可;如:
我们还可以是用这种方式进行远程登录:
SSH密钥对验证:
由客户端生成一对密钥,私钥由客户端保管,公钥发往服务器某个用户的家目录下;当远程登录 时,通过公钥验证客户端信息;
1.建立密钥对:
ssh-keygen:
-b bits:不同加密算法拥有不一样的密钥字节要求,如
RSA:最少768bits,默认2048bits;
DSA:明确指定1024bits;
ECDSA:256bits,384bits,521bits;
ED25519:忽略-b指定的长度;
-t:指定加密算法的类型;如rsa,dsa,ecdsa等;
-f filepath:指定密钥对存放的路径;
-P:设置私钥密码;可以在命令行设置,也可以在命令启动后,交互设置;
实例:
id_rsa.pub即为公钥;将其复制到服务器的某个用户的家目录下;通过ssh-copy-id命令;
ssh-copy-id:将密钥文件复制到另一个服务器中的用户
常用选项:
-i:指定密钥路径;
-p port:指定连接到的服务器端口;
实例:
在centos6.7,即[email protected]下,wjq这个用户的家目录下会产生一个.ssh的文件,里面 保存的就是客户端发往服务器的公钥;
当完成上述操作后,客户端就可以基于密钥对的形式登录到服务器端了;
scp:可以将客户端与远程主机之间建立数据传输;
两种使用情形:
推送:把我们的东西给别人
scp [option]... SRC HOST:/PATH/TO/DEST(将本地主机的SRC文件,传送到远程主机的DEST目录下) 拉取:把别人的东西拿过来
scp [option]...HOST:/PATH/TO/DEST SRC(将172.16.72.1主机的DEST文件放到本地主机的SRC目录下)
常用选项:
-r:递归复制,复制目录内容;
-p:保留原文件的权限信息;
-q:静默模式;不输出任何信息;
-P port:指明远程主机ssh协议监听的端口;
实例:将客户端的文本文件a传送到172.16.72.5下的wjq这个用户的家目录
172.16.72.5/home/wjq:
若想更改配置信息的话,可以配置文件/etc/ssh/ssh_config中更改,也可以在命令行中直接引用,如消去第一次登录时严格的认证;
其格式:
HOST pattern
OPTION1 VALUE
OPTION2 VALUE
如:
基于服务器端口的配置文件/etc/ssh/sshd_config
在该配置文件下,修改关于服务器的配置,对服务器所需要具备的功能作出调整;
配置文件的格式:
配置指令 值
常用配置指令:
Protocol 2:选择SSH协议版本,通常为V2;
Port 22:SSH服务要监听的服务端口,通常在生产环境中SSH服务的监听端口都不为22,这样 就可以避免一些恶意破坏;
PermitRootLogin yes:是否允许客户端以root用户身份登录,可以以普通用户的身份登录, 在进行root转换,通常为no;
ListenAddress 0.0.0.0:指明SSH服务要监听IP地址;
MaxAuthTries 6:密码输错次数;
UseDNS yes:是否允许使用DNS反向解析主机名;
AllowUsers user1 user2...:设置登录用户的白名单,明确规定只允许哪些用户进行远程登 录;
AllowGroups group1 group2...:设置组的白名单;
DenyUsers user1 user2...:设置登录用户的黑名单,明确规定只允许哪些用户进行远程登 录;
DenyGroups group1 group2...:设置组的黑名单;
在修改配置文件之后,为使得配置文件生效,必须将配置文件重启;
在CentOS7中systemctl reload sshd.service
在CentOS5,6中service sshd reload
综上所述,如何最好的实现ssh服务:
1.不要使用root登录;
2.一定要使用口令的方式登录时,密码设复杂点;
3.最好使用密钥对登录;
4.不要使用V1协议;
5.IP地址的监听要监听特定的IP地址,不要是0.0.0.0;
6.Port端口不要是22;
7.设置黑白名单;
8.设置空闲会话的超时时长;
9.做好日志;
10.设置ssh的访问频度;
11.禁止使用空密码;
dropbear:作为SSH的另一种表现形式,也具有远程登录的功能,是一种轻量级的实现方案,多用于 嵌入式环境;
dropbear程序在系统中是没有的,需要我们自己手动编译安装;
编译安装的步骤:
1.首先上网下载一个dropbear的源代码包,并使用tar -xf命令解压;
2.进入源代码包,cd 源代码包;
3.执行./configure生成makefile文件;
4.执行过程中出错,我们需要安装一个小程序,zlib-devel;使用yum安装即可;
5.安装完后重新执行./configure
6.执行make命令,当需要部分功能时,可编译一部分代码,如
只编译三个功能;
7.执行make install命令,若只编译了上述三个功能,则在其后加一个install继续执行即可;
8.安装成功,可使用dropbear -h验证是否成功;
dropbear的使用:
dropbear可以通过交换密钥的方式构建出远程服务器与客户端主机的桥梁;但dropbear的使用必需先创建三个dropbear的配置文件用来存放密钥,分别是:
dropbear_rsa_host_key
dropbear_dss_host_key
三个配置文件分别针对于rsa,dss,ecdsa;
现在/etc下创建一个dropbear目录,用于存放这三个文件;
如:
dropbear_rsa_host_key
dropbear_dss_host_key
启动dropbear:
-p IP:port:设置当前服务器IP,并将dropbear远程访问的端口列出;
-F:使dropbear应用程序运行在前台,可观察到有哪些客户端登录登出服务器;
-E:将dropbear服务进程运行期间产生的信息从标准错误输出而不是写入到系统日志文件 (/var/log/message)
-w:不能使用root用户进行登录,但登录后可切换;
在另一台客户端主机,要想连接到已经启动dropbear的服务器端口就要使用如下命令
~]#ssh -p port [email protected]
当客户端进行登录后,就会在服务器端的前台界面下出现一条记录,表示该用户登录到服务 器,当客户端退出时,服务器这边还是会有客户端退出的记录;
如: