目录
一、ssh简述
1、常见的ssh协议使用的工具
2、sshd服务
3、ssh原理
二、ssh登录设置
登录
不登陆,查看对方主机的信息
三、ssh服务端配置及ssh优化
1、服务端配置
2、ssh优化
四、使用密钥对免密登录
原理
操作
方法一:手动
方法二:写脚本,使该网段的都可以免密登录
五、ssh客户端
1、scp命令
2、sftp命令
一、ssh简述
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
优点:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
1、常见的ssh协议使用的工具
客户端:
Linux Client: ssh, scp, sftp,sloginWindows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient其中xshell与MobaXterm经常被使用,而区别在于xshell是非开源的,MobaXterm是开源的,且功能较多。
OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。
所以在CentOS 7中默认安装了openssh相关的软件包,且将sshd服务设置为开机自启。
openssh是ssh软件的软件包名,安装的时候使用openssh
sshd是ssh软件的服务名,在启用ssh软件前需要先启动sshd服务
ssh是软件名,远程连接使用的
例如:ssh 192.168.3.101
2、sshd服务
sshd服务端主要包括两个服务功能 ssh远程链接和sftp服务(文件传输功能)
作用:SSHD 服务使用 SSH 协议可以用来进行远程控制,或在计算机之间传送文件。 相比较之前用 Telnet 方式来传输文件要安全很多,因为 Telnet 使用明文传输,SSH 是加密传输。
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
# 为服务器端配置文件,设置与服务端相关的应用可通过此文件实现
客户端配置文件:/etc/ssh/ssh_config
#为客户端配置文件,设置与客户端相关的应用可通过此文件实现
3、ssh原理
1)客户端发起连接请求
2)服务端向客户端发送自己的公钥和一个会话ID
3)客户端得到服务端的信息后,通过算法生成密钥,结合自己的公钥生成密钥对,然后将密钥对发送给服务端
4) 服务端收到后,使用自己的私钥进行解密,拆分出客户端的公钥
5)最后,客户端拥有自己的公钥和私钥以及服务端的公钥,服务端拥有自己的公钥和私钥以及客户端的公钥
二、ssh登录设置
登录
命令格式:ssh [选项] [用户名@]IP地址 [-p] 端口号
选项:
-l 指定登录名称; -t 跳板登录,即通过另一台主机连接第三台主机
例1:什么选项都不加
[root@heitui ~]#ssh 192.168.3.101
例2:指定登录名称
[root@heitui ~]#ssh -l lisi 192.168.3.101 # 方式一
[root@heitui ~]#ssh lisi@192.168.3.101 # 方式二
例3:通过跳板连接第三台主机
root@heitui ~]#ssh -t 192.168.3.101 ssh 192.168.3.102
例4:修改端口号,使用其他端口登录
# 修改端口号
[root@server1 ~]#vim /etc/ssh/sshd_config
# 第17行 Port 22
# 将22改为9527
[root@heitui ~]#ssh 192.168.3.101 -p 9527
不登陆,查看对方主机的信息
格式:ssh 目标主机IP 命令
例如:查看对方的网卡信息
[root@heitui ~]#ssh 192.168.3.101 ifconfig
三、ssh服务端配置及ssh优化
1、服务端配置
配置文件/etc/ssh/sshd_config
常用配置项:
白名单与黑名单设置
白名单
AllowUsers 用户名,用户名,用户名.....
例如:仅允许lisi用户登录
AllowUsers lisi
黑名单
DenyUsers 用户名,用户名,用户名.....
例如:不允许lisi用户登录
DenyUsers lisi
2、ssh优化
建议使用非默认端口 22
禁止使用protocol version 1
限制可登录用户 白名单
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址 公网 内网
基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志 分离
四、使用密钥对免密登录
原理
首先在客户端生成一对密钥(ssh-keygen)
并将客户端的公钥ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括ip、用户名
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
操作
方法一:手动
1、生成密钥文件
[root@heitui ~]#ssh-keygen -t ecdsa
2、将密钥文件传到对面
[root@heitui ~]#cd .ssh/
[root@heitui .ssh]#ssh-copy-id -i id_ecdsa.pub 192.168.3.101
方法二:写脚本,使该网段的都可以免密登录
1、编写脚本
[root@heitui ~]#cd .ssh/
[root@heitui .ssh]#vim mmdl.sh
#!/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
:wq # 保存并退出
2、执行脚本
[root@heitui .ssh]#bash mmdl.sh # 执行以下脚本即可实现免密登录
3、免密登录
五、ssh客户端
1、scp命令
远程安全复制
格式:scp 本机文件路径 对方主机的IP地址:文件路径
# 将本机文件拷贝到对方主机中
scp 对方主机的IP地址:文件路径 本机文件路径
# 将对方主机中的文件拷贝到本机中
2、sftp命令
安全FTP上传和下载
格式:sftp user@ip #登录到服务器
sftp> get etc/passwd /opt/ # 下载文件到本地文件夹内
sftp> put etc/passwd /opt/ # 上传载文件到服务器文件夹内
下载文件、退出sftp
get #下载文件
get -r #下载目录
quit #退出sftp
put #上传文件
put -r #上传文件夹
退出命令:quit、exit、bye都可以