ssh服务及简单应用
SSH主要功能及概要:
1、SSH主要提供两个服务:一个是提供类似telnet远程联机服务器的服务,另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务。
2、默认端口是22,安全协议版本是SSH2
3、服务端主要包含两个服务功能ssh远程连接,SFTP服务
4、ssh客户端包含ssh连接命令,以及远程拷贝scp命令sftp命令等
SSH结构:
SSH服务由服务端软件openssh和客户端(常见客户端:SSH,CRT,putty,xshell)组成,SSH服务默认使用22端口提供服务,它有两个不兼容的SSH协议版本,分别是1.x和2.x
加密机制:通过密钥机制的
1.客户端连接服务端,服务端发送密钥
2.客户端生成密钥然后整合服务端密钥,形成新的密钥
3.通过密钥对解密进行交流
配置文件:/etc/ssh/sshd_config
SSH1.X整个联机加密步骤:
1.当ssh服务启动的时候,就会产生一个768-bit的临时公钥(sshd_config配置文件中)存放在server中
2.当client端SSH联机请求传送过来时,服务器就将这个密钥发给客户端,客户端就会对比现在的公钥与之前存储的公钥,看是否一样。判断标准时客户端联机用户目录下~/.ssh/known-hosts文件的内容(Linux客户端)
3.客户端收到后再自己生成一个256-bit的私钥,并将私钥与公钥整合成一对完整的密钥,再传给服务端
4.完成以后,服务与客户端就以这对1024-bit的密钥进行数据的传递
SSH1.X是不安全的,当他第一次收到共享密钥对后,就不再检查,所以内容可能会被截获并修改
SSH2.X整个联机加密步骤:
其他与SSH1.X一样,就是多加了一个确定联机正确性的Diffie-Hellman机制,在每次传输数据中,服务端都会用该机制检查数据的来源是否正确
SSH的服务认证类型:
1、基于口令的安全验证:
基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接账号和口令(当然也要知道对应服务器的ip及开放端口),就一颗通过ssh客户端登陆到这台远程主机。
Linux中两个服务器之间连接:ssh -p端口号 用户名@ip地址
ssh -p23 zr@192.168.1.1
2、基于密钥的安全验证:
基于密钥的安全验证方式是指,需要依靠密钥,也就是必须事先建立一对密钥对,然后把公用密钥放在需要访问的目标服务器上,另外,还需要把私有密钥放到ssh的客户端或对应的客户端上。
此时,如果要想连接到这个带有公用密钥的SSH服务器,客户端SSH软件或者客户端服务器就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放,上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH 服务器就用公用密钥加密“质询”( challenge)并把它发送给SSH客户端。
SSH客户端收到“质询”之后就可以用自己的私匙解密,再把它发送给SSH服务器。使用这种方式,需要知道联机用户的密钥文件。与第-种基于口令验证的方式相比,第二种方式不需要在网络上传送口令密码,所以安全性更高了,这时我们也要注意保护我们的密钥文件,特别是私钥文件,一旦被黑客获取,危险就很大了。I
给一个端口如何查看:lsof -i :22 或者是 netstat -lntup|grep 22
SSH服务的安全优化:
修改配置文件sshd_config:
修改默认端口:Port 52113
禁止远程登陆root:Permi tRootLogin no
禁止空密码登陆:Permi tEmptyPasswords no
不使用DNS:UseDNS no
加速连接:百度去
示例:Linux客户端通过ssh连接:
ssh -p22 zr@192.168.157.132 #语法基本格式
在ip地址后面还可以执行简单的命令比如:
ssh -p 22 zr@192.168.157.132 /sbin/ifconfig #注意命令需要全路径,并且此操作不会切到别的用户上去
当提示拒绝连接的时候:1、查看ssh连接的端口
2、查看ip地址是否正确
3、ssh服务是否开启
当第一次连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts
SSH客户端附带的远程拷贝命令scp命令:注意这里参数-P是大写
scp 的基本语法使用:scp - secure copy
scp -P22 要拷贝的文件 zr@192.168.157.132:/接目录
拉文件:scp -P22 zr@192.168.157.132:/接文件 放到哪里
SSH服务附带的sftp功能服务:
sftp -oPsrt=端口号 zr@192.168.157.132 就能连上啦默认连接的的目录是对象的家目录
参数:put可以上传文件 get可以下载文件
put /etc/hosts /temp/#把/etc/hosts从客户端本地传到sftp服务器指定的目录/temp下