ssh服务
一、ssh的介绍
1、ssh定义:ssh(secure shell)理解是一个协议,使用在linux/unix系统里,远程控制服务器的
2、centos6/7/8里面安装好系统,默认安装openssh
ubuntu里默认不安装,需要自己来指定安装
[root@liuhongjie ~]# rpm -qa |grep openssh
openssh-clients-8.0p1-5.el8.x86_64 #客户端程序
openssh-server-8.0p1-5.el8.x86_64 #服务器端
openssh-8.0p1-5.el8.x86_64 #版本号
rpm是linux里面的一个软件管理的命令
在redhat/centos里有使用,
rpm -qa 查询在本机已经安装的所有软件
q query
a all
安装客户端使用软件openssh
经常需要给openssh进行升级,保障linux系统的安全:
yum update openssh openssh-clients openssh-server -y
3、ssh默认监听的端口是:22
使用的协议是:tcp
4、如何查看sshd服务是否启动
1.看进程-->ps aux|grep sshd
2.看端口-->lsof -i:22
3.直接访问
4.看日志
二、ssh原理
1、数据加密:用来传输数据的时候,对数据进行加密的
2、算法:
1.常见的加密算法
RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)、 ECDSA
2.加密算法的分类:
对称加密
非对称加密(公钥和密钥)
3、数字签名:
1.作用:用来做身份识别
2.原理:通过产生随机的字符串
3.具体的流程图:
4、认证方式:
1、密码认证:通过/etc/passwd和/etc/shadow文件
2、密钥认证
三、ssh相关配置、文件、故障及命令
1、ssh相关配置
1、配置存放的目录:/etc/ssh
2、相关的配置文件:给进程传递参数的
[root@nameserver ssh]# cd /etc/ssh/
sshd_config --》服务器端的配置文件 server --》进程:sshd
ssh_config --》ssh命令使用的配置文件 client --》进程:ssh
ssh_host_ecdsa_key.pub --》ecdsa加密算法的公钥
ssh_host_ecdsa_key --》ecdsa加密算法的私钥
2、ssh相关文件
1、日志文件:/var/log/secure
2、know_hosts文件:
2.1、产生:客户机使用ssh第一次连接服务器时,将服务器上sshd守护进程的公钥复制到本地
存放到本地~/.ssh/known_hosts文件中,每行存放一台服务器的公钥用来验证服务器的身份
2.2、作用:数据加密+服务器和客户端身份识别(数字签名)
2.3、存放路径:在~/.ssh
3、authorized_keys文件:
3.1、路径:在~/.ssh
3.2、作用:用来进行合法身份验证,证明你是linux系统的合法用户,登陆linux使用
3、ssh相关故障
1、建议关闭防火墙,并且设置开机不启动
systemctl stop firewalld
systemctl disable firewalld
2、建议关闭selinux,并且设置开机不启动
2.1、selinux是linux系统里的一套安全机制,用来保护linux系统的安全,
会限制进程去做某些对安全有威胁的事情。
2.2、临时调整selinux状态
[root@localhost ssh]# getenforce 查看selinux的状态
Enforcing
[root@localhost ssh]# setenforce 0 临时调整selinux的策略为宽容模式
[root@localhost ssh]# getenforce
Permissive
2.3、永久修改selinux的策略为disabled
[root@localhost ssh]# vim /etc/selinux/config
SELINUX=disabled
4、ssh相关命令
1、ssh命令:
1.1、ssh root@192.168.243.132 #使用root用户远程连接192.168.243.132这个服务器
1.2、ssh 192.168.243.132 #不指定登陆用户,默认使用当前用户名远程连接
1.3、在远程连接的服务器上输入exit即可退出
1.4、可以运行远程机器上的脚本或者命令
1.5、如果修改了ssh的配置文件的端口,连接时需要接选项:-p
来指定端口号
2、sftp命令:
2.1、基于ssh协议实现ftp功能,底层使用的ssh协议
2.2、提供文件的上传和下载
3、scp命令:
远程拷贝,底层通过ssh协议远程连接到其他的机器上,复制文件
3.1、从本地将文件传输到服务器
scp【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】
示例:
scp /lianxi/random.sh root@192.168.243.132:/lianxi
3.2、从本地将文件夹传输到服务器
scp -r【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】
示例:
scp -r /lianxi/python_test root@192.168.243.132:/lianxi
3.3、将服务器上的文件传输到本地
scp 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】
示例:
scp root@192.168.243.132:/lianxi/liuhj.ttt /lianxi
3.4、将服务器上的文件夹传输到本地
scp -r 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】
示例:
scp -r root@192.168.243.132:/lianxi/lhj /lianxi
四、加固ssh服务,提高安全性
1、在/etc/ssh/sshd_config里修改端口
2、禁用用户
也是通过修改这个配置文件/etc/ssh/sshd_config,来禁用root用户。
3、为什么ssh的时候不能使用root?登录进去了可以使用root?
因为底层他没有经过ssh的检测,而是在linux系统内部再启动了一个进程,切换到root用户
4、升级openssh
yum update openssh openssh-clients openssh-server -y
5、密钥认证
先是通过修改这个配置文件/etc/ssh/sshd_config,开启密钥认证,然后再去配置密钥认证
6、密码认证
多修改密码,提高密码的复杂性
五、建立免密通道
1.生成密钥对,在192.168.243.128上使用root用户生成密钥对,密钥对会在用户的家目录下
[root@localhost ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Ecds9x/kXGpjN1lXDtudEerhZyCFAJ4ugGRThdehBsM root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| +o+o..o++o ...o+|
|o oEo.o..o+.o .*B|
| . ..o o.. o ==oO|
| o . . + O*.|
| . .S = *o|
| . o .|
| |
| |
| |
+----[SHA256]-----+
2.进入用户的家目录,查看公钥和私钥
[root@localhost ssh]# cd /root/.ssh/
[root@localhost .ssh]# ls
id_rsa 私钥
id_rsa.pub 公钥
known_hosts
[root@localhost .ssh]# ll 不建议修改密钥文件的权限,不然会导致密钥失效
总用量 12
-rw-------. 1 root root 1679 7月 27 16:46 id_rsa
-rw-r--r--. 1 root root 408 7月 27 16:46 id_rsa.pub
-rw-r--r--. 1 root root 182 7月 27 16:34 known_hosts
3.上传公钥到对方的服务器,要求对方的服务器运行root用户登录
[root@localhost .ssh]# ssh-copy-id -p 2222 -i id_rsa.pub root@192.168.243.132
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/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@192.168.243.132's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '2222' 'root@192.168.243.132'"
and check to make sure that only the key(s) you wanted were added.
4.验证登录是否需要密码
[root@localhost .ssh]# ssh -p '2222' 'root@192.168.243.132'
Last failed login: Wed Jul 27 16:53:28 CST 2022 from 192.168.243.128 on ssh:notty
There were 30 failed login attempts since the last successful login.
Last login: Wed Jul 27 11:55:11 2022
[root@nginx-kafka01 ~]#
[root@localhost .ssh]# scp -P 2222 'root@192.168.243.128':/etc/passwd .
passwd 100% 1217 561.0KB/s 00:00
[root@localhost .ssh]#
[root@localhost .ssh]# ssh -p ‘2222’ 'root@192.168.243.128' mkdir /wangshuai
5.相关流程图