linuxSSH远程连接教程和如何免密登录

ssh远程管理

  • SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能

  • SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性

openssh服务器

1.SSH(Secure Shell)协议

  • 是一种安全协议

  • 对通信数据进行了加密处理,用于远程管理

  • 数据传输是压缩的,可以提高传输速度

2.OpenSSH

  • 服务名称:sshd

  • 服务端主程序:/usr/sbin/sshd

  • 服务端配置文件:/etc/ssh/sshd_config

客户端连接服务端流程:公钥交换原理

1.客户端首次发起连接,服务端会生成一个随机会话id,会将服务端的公钥以及会话id发给对面

2.客户端收到会话id以及服务端的公钥会用客户端自己的公钥以及会话id做运算,产生一个结果

3.再用服务端的公钥加密,将结果传给服务端

4.服务端收到加密结果后,会用自己的私钥解密得到客户端公钥和会话id运算的结果

5.因为已知会话id,所以可以得到客户端的公钥,最后双方持有对面的公钥

sshd服务支持两种验证方式

1.密码验证

对服务器种本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解

2.密钥对验证

要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服 务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录

公钥和私钥的关系:

  • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密

  • 不能根据一个密钥来推算出另一个密钥

  • 公钥对外公开,私钥只有私钥持有人才知道

当密码验证、密钥对验证都启用时,服务器将有限使用密钥对验证。可根据实际情况设置验证方式

vim /etc/ssh/sshd_config
​
PasswordAuthentication  yes     #启用密码验证
​
PubkeyAuthentication      yes      #启用密钥对验证

使用SSH客户端程序

1.SSH登录

ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
命令                                         指定 端口号 
​
首次登录会询问,并要求输入密码
​
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
​
-p:指定非默认的端口号,缺省时默认使用22端口

2.scp远程复制

下行复制

scp root@192.168.80.11:/etc/passwd /root/passwd10. txt    
#将远程主机中的/etc/passwd文件复制到本机

上行复制

scp -r /etc/ssh/root@192.168.80.10:/opt    
#将本机的/etc/ssh目录复制到远程主机

OpenSSH服务端配置 

sshd_ config配置文件的常用选项设置

vim /etc/ssh/sshd_config

文件内容作用
Port 22监听端口为 22
LisetnAddress   0.0.0.0监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime   2m设定如果用户登录失败,登录验证时间为2分钟,默认单位为秒
PermitRootLogin   no不允许root远程ssh登录(虽然阻止了root,但是普通的用户可以使用su)
MaxAuthTries   6最大重试次数为6
PermitEmptyPasswords  no禁止空密码用户登录
UseDNS   no禁用DNS反向解析,以提高服务器的响应速度

白名单和黑名单

1.vim /etc/ssh/sshd_config                                          #手动添加

2.AllowUsers lisi zhangsan@192.168.91.101

        #允许所有的主机访问我的lisi用户,只允许zhangsan从192.168.91.101上访问

3.DeuyUsers zhangsan

       #禁止zhangsan登录(注意不能和AllowUsers一起使用)

ssh服务的最佳实践

  1. 建议使用非默认端口 22

  2. 禁止使用protocol version1

  3. 限制可登录用户 白名单

  4. 设定空闲会话超时时长

  5. 利用防火墙设置ssh访问策略

  6. 仅监听特定的ip地址 公网 内网

  7. 基于口令认证时,使用强密码策略

  8. 使用基于密钥的认证

  9. 禁止使用空密码

  10. 禁止root用户直接登录

  11. 限制ssh的访问频度和并发在线数

  12. 经常分析日志 分离(将ssh日志单独放文件,随时查看)

  13. 禁用反向dns

使用密钥对及免交互验证登录

原理: 用户/密码

            基于密钥

1.在客户端生成密钥和私钥

         ssh-keygen

2.选择位置,默认在家目录下的.ssh(回车即默认)

3.设置打开这个文件的密码,默认没有密码(回车即默认)

4.进入家目录下的公钥文件

    cd .ssh

5.将公钥文件上传至对方服务器

   ssh-copy-id -i ~/.ssh/id_rsa.pub 对方服务器地址(默认考给root)

6.到对方服务器 测试是否成功

   ssh 对方服务器的ip地址

7.  cd .ssh/

    查看密钥cat authorized_key是否上传成功

如何实现免交互登录:

在服务器里重新来一遍到客户端的配置,和客户端一样顺序

#免密登录脚本
​
#!/bin/bash
PASS=123123
#设置网段最后的地址,4-255之间,越小扫描越快
END=254
​
IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
​
rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log
for((i=3;i<="$END";i++));do
ping -c 1 -w 1  ${NET}$i &> /dev/null  && echo "${NET}$i" >> SCANIP.log &
done
wait
​
ssh-keygen -P "" -f /root/.ssh/id_rsa
rpm -q sshpass || yum -y install sshpass
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP
​
AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值