SSH协议介绍与应用

1. 远程服务介绍说明

​
    SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?
​
01)提供远程连接服务器
​
02)对传输的数据进行加密
​
SSH主要用来连接服务器。而Telnet主要用来连接网络设备。
​
SSH:        实现数据加密传输    22      默认支持root用户远程连接
​
Telnet:     实现数据明文传输    23      默认不支持root用户远程连接
​

2. 如何实现Telnet远程管理

​
#服务端配置
​
#第一里程:下载安装telnet远程管理服务端软件
[root@qls ~]#  yum install -y telnet-server telnet
​
#第二里程:启动telnet服务    
[root@qls ~]#  systemctl  start telnet.socket
​
#第三里程:检查服务是否启动成功
[root@qls ~]#  netstat -lntup|grep 23
​
#第四里程:创建一个普通用户并给其设置密码
[root@qls ~]#  useradd   www
[root@qls ~]#  echo "1" |passwd  --stdin   www
    
#客户端配置
​
#第一里程:下载安装telnet软件
[root@qls ~]# yum  install -y telnet 
​
#第二里程:实现远程连接
[root@qls ~]# telnet 10.0.0.7 (要输入普通用户信息和密码信息)
​

3. SSH服务重要文件介绍

​
[root@qls ~]# rpm -ql openssh-clients
​
/etc/ssh/ssh_config     --- ssh客户端配置文件
/usr/bin/scp            --- 远程拷贝命令
/usr/bin/sftp           --- 实现ftp文件传输功能命令
/usr/bin/slogin         --- 远程登陆命令
/usr/bin/ssh            --- 远程登陆命令 
/usr/bin/ssh-copy-id    --- 分发公钥命令???
​
[root@qls ~]# rpm -ql openssh-server
​
/etc/ssh/sshd_config    --- 服务端配置文件
​
[root@qls ~]# rpm -ql openssh 
​
/usr/bin/ssh-keygen     --- 创建密钥对命令
​

4. SSH服务远程连接原理

​
1)服务器端开启ssh服务,在端口22监听客户端请求
​
2)客户端发出远程连接请求
​
3)如果是第一次请求连接,服务端会响应一个确认信息,并把自己的公钥发送给客户端 
​
4)客户端进行确认并根据服务端发来的公钥对登录的密码进行加密
​
5)加密后的信息传回到服务端,服务端用自己的私钥解密,若密码正确,则用户登录成功。
​
注意:
​
sshv1版本:密钥对不会定期更换,容易被黑客人员破解
​
sshv2版本:密钥对会进行定期更换,不容易被黑客人员破解
​
检查版本:ssh -1 root@10.0.0.51  如果报错说明ssh只支持sshv2版本
​

5. SSH服务远程连接方式

​
基于密码的方式:交互方式远程连接
​
基于密钥的方式:免交互方式远程连接
​
#基于密钥方式工作原理:
​
1)在客户端创建出新的密钥对
​
2)客户端将公钥传输给服务端(基于密码传输)
​
3)服务端接受公钥文件并保存
​
4)当客户端再次请求和服务端建立连接
​
5)服务端会进行公钥质询过程
​
6)客户端利用私钥解密公钥,将解密结果发给服务端
​
7)最终实现客户端和服务端远程连接建立

​

6. SSH服务基于密钥方式连接

​
管理服务器
​
#第一个里程:创建密钥对信息
​
[root@qls ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:Uii0oUMScMl72i4c1WRs1ewKYeTKhjtrg6L/9Rvxq8k root@oldboy
The key's randomart image is:
+---[DSA 1024]----+
|=oo.oo...o       |
| +oo +B.  o      |
|  o.o*o...       |
|  .+ooo.  .      |
|  .=+ ..S.       |
|  oo.  ..o       |
| ooo  . . .      |
|o =o.. o o .     |
|+oo+.   Eo.      |
+----[SHA256]-----+
​
​
#第二个里程:利用公钥分发命令分发公钥信息
​
[root@qls ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub root@10.0.0.51
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_dsa.pub"
The authenticity of host '10.0.0.51 (10.0.0.51)' can't be established.
ECDSA key fingerprint is SHA256:xMPEOIBogi7ssMeXBe3FKFKTw/yYDpfIE5OKNSrBdMc.
ECDSA key fingerprint is MD5:7f:24:0f:ae:9e:0f:fa:13:83:f9:b0:12:1f:f4:0e:e9.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@10.0.0.51's password: 
​
Number of key(s) added: 1
​
Now try logging into the machine, with:   "ssh 'root@10.0.0.51'"
and check to make sure that only the key(s) you wanted were added.
​
#第三个里程:进行远程连接测试
​
[root@qls ~]# ssh root@10.0.0.51
​
[root@qls ~]# ssh root@10.0.0.51  "ifconfig"
​
#问题一:
执行:ssh oldboy@10.0.0.51  不能连接的
说明:基于密钥连接,会识别用户身份信息
​
密钥分发的实际过程:执行ssh-copy-id命令都干了什么
​
01) 将公钥文件传输到被管理服务器相应用户的家目录中
    [root@qls ~]# scp -rp ~/.ssh/id_dsa.pub root@10.0.0.51:~
    输入密码
02) 被管理服务在家目录下面创建一个.ssh目录
    [root@qls ~]# mkdir ~/.ssh/
03) 将公钥文件移动到.ssh目录中,并进行修改名称和授权
    [root@qls ~]# mv ~/id_dsa.pub ~/.ssh/authorized_keys
    [root@qls ~]# chmod 600 ~/.ssh/authorized_keys
    
#为什么要进行重命名:
​
[root@qls ~]# cat /etc/ssh/sshd_config      
47 AuthorizedKeysFile      .ssh/authorized_keys
​

思考:如何实现自动批量分发公钥?

​
批量分发公钥的操作
​
#!/bin/bash
# 删除旧的密钥对
rm -f ~/.ssh/id_dsa*
# 创建密钥对
ssh-keygen -t dsa -f ~/.ssh/id_dsa -N "" &>/dev/null
# 批量分发公钥的操作
for ip in 5 6 7 8 9 31 41 51 61 71
do
  sshpass -p1 ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no" 172.16.1.$ip &>/dev/null
 if [ $? -eq 0 ];then
  echo -e "\033[32mhost 172.16.1.$ip Distribution of the secret key Success!!! \033[0m"
  echo
 else 
  echo -e "\033[31mhost 172.16.1.$ip Distribution of the secret key Failed !!! \033[0m"
  echo
 fi      
done
​

7. 配置SSH服务配置文件

​
[root@qls ~]# vim /etc/ssh/sshd_config(不要经常改动)
​
SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
​
1.更改远程连接登陆的端口   
​
2.禁止ROOT管理员直接登录 
​
3.密码认证方式改为密钥认证
​
4.重要服务不使用公网IP地址
​
5.使用防火墙限制来源IP地址
​
PermitRootLogin no          #→root超级用户黑客都知道,建议禁止它远程登陆能力。
​
PasswordAuthentication      #→禁止使用密码直接远程登录
​
UseDNS no                   #→禁止ssh进行dns反向解析,影响ssh连接效率参数
​
GSSAPIAuthentication no     #→禁止GSS认证,减少连接时产生的延迟
​
#→http://oldboy.blog.51cto.com/2561410/1300964
​
思考:如果服务端端口号修改了,可以正常分发公钥?
​

8. SFTP命令使用介绍

sftp -oPort=52113 oldboy@10.0.0.7   --- 进行sftp远程连接

sftp>      --- 进入到ftp文件传输模式(ftp相关命令)
bye        --- 离开ftp模式
cd path    --- 切换远程主机的目录
get        --- 从远程服务器上将数据下载到本地
lcd /tmp   --- 进行本地切换目录信息
lpwd	   --- 查看本地所在路径信息
put        --- 进行数据上传操作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值