ssh服务的学习框架图为:
一、什么是ssh服务?
1、ssh是secure shell protocol的简写,是安全的sshll。由 IETF 网络工作小组(Network Working Group )制定。
2、解决了什么问题:在进行数据传输之前,ssh先对联机数据包通过加密技术进行加密处理,加密之后在进行数据传输,确保了传递过程中的数据安全。
1、ssh理解是一个协议,用来远程控制服务器的。
使用在linux/unix系统里,远程控制服务器。
remote login program --远程登录程序
对数据进行加密传输的服务,主要用在远程登录。
ssh协议是应用层协议,支持的是ssh协议。
分层:应用层、传输层、网络层、数据链路层、物理层。
在计算机网络中属于应用层。
因为传统的网络服务程序。如ftp、pop和Telnet在本质上是不安全的,因为它们在网络上用明文传送口令和数据,有心之人会很容易的截取到这些口令和数据。同时,这些服务的安全验证方式是有一定的弱点的,就是很容易受到“中间人”的攻击。所谓的“中间人”的攻击方式,就是"中间人"冒充真正的服务器啦接收你要传给服务器的数据,然后再冒充你把数据传送给真正的服务器。服务器和你之间的数据传送就会被“中间人”“动手脚”修改了一下信息,这样就会出现很严重的问题。
而SSH是专程为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以很有效的防止远程登录管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件。
2、在默认状态下,SSH服务主要提供两个服务功能
n 一个是提供类似于Telnet远程联机服务器的服务,即上面提到的ssh服务。
n 一个是类似于FTP服务的sftp-server,借助SSH协议来传输数据的,提供更加安全的SFTP服务(vsftp、proftp)。
ssh服务主要是在HP-UX、LINUX 、AIX、UNIX、LRIX、SCO、Mac OS X等系统上都有,但是Windows上没有。
ssh服务连接使用的是22端口,基于tcp协议。
3、使用什么软件实现ssh——远程登录( openssh)
ssh是允许root用户来登录的,Linux上是允许的(如果想要不允许的话:可以修改文件配置
vim /etc/ssh/sshd_config);而在Ubuntu上面是不允许的,但是也可以进行设置)
3.1、OpenSSH是什么
openssh是使用ssh协议进行远程登录的首要连接工具。它对所有通道进行加密,以消除窃听、连接劫持和其他攻击的。此外,OpenSSH是提供了大量的安全隧道功能,几种身份验证方法和复杂的配置选项。是开源免费的,官方学习网站为:http://www.openssh.com/
centos7/8/6安装好系统,是默认安装openssh的,在redhat里也是默认安装的。Ubuntu里有server版本,没有安装的。
可以通过查看进程查看sshd服务和openssh是否已经启动:
root@nginx-kafka01 ~]# ps -aux|grep sshd root 6633 0.0 0.4 112872 4300 ? Ss 09:25 0:00 /usr/sbin/sshd -D root 7850 0.0 0.5 157268 5908 ? Ss 09:25 0:00 sshd: root@pts/0 root 7906 0.0 0.0 112824 984 pts/0 R+ 09:43 0:00 grep --color=auto sshd [root@nginx-kafka01 ~]# netstat -anpult|grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6633/sshd tcp 0 36 192.168.2.152:22 192.168.2.118:50743 ESTABLISHED 7850/sshd: root@pts [root@nginx-kafka01 system]# rpm -q openssh openssh-7.4p1-16.el7.x86_64 [root@nginx-kafka01 system]# rpm -qa |grep openssh openssh-clients-7.4p1-16.el7.x86_64 openssh-7.4p1-16.el7.x86_64 openssh-server-7.4p1-16.el7.x86_64
3.2、sshd中d的含义
d表示守护进程:daemon。一直在内存里运行的程序,除非人为的停止。
ssh daemon :ssh
openssh 提供某些ssh的工具---客户端
openssh-client 客户端程序
openssh-server 服务器端程序
c/s架构的软件。
使用什么软件实现ssh:openssh(Linux中可以实现ssh服务,但是Windows中没有ssh服务):开源免费的。
扩展:
rpm是Linux里的一个软件管理的命令,在redhat/centos里使用没有使用oracle Linux
rpm -q 查询 query
rpm -a -all :所有
rpm -qa 查询本机已经安装的所有的软件。
二、ssh搭建+配置+排错+命令
1、ssh的命令的使用
第一次连接登录需要你输入yes,不是第一次就不需要:第一次登录相当于发送对方的公钥过来。将客户机上sshd守护进程的公钥复制到本地,存放在本地~/.ssh/known_hosts文件中,每行存放一台服务器的公钥,用来验证服务器的身份。
1、 只是进行登录
(1)这是第一次登录:
192.168.2.132登录到192.168.2.152
ssh相当于一个xshell服务。
①ssh 用户名@服务器地址(推荐使用)
[root@nginx-kafka02 ~]# ssh root@192.168.2.152 ##连接到192.168.2.152 The authenticity of host '192.168.2.152 (192.168.2.152)' can't be established. ECDSA key fingerprint is SHA256:+q5FKuWvEqBzdvqWS+7L3pGu5otwv/yepkY1j5iOaCY. ECDSA key fingerprint is MD5:d1:9e:bd:5f:49:49:37:d8:5d:c6:c3:f8:dd:10:c7:b8. Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': yes Warning: Permanently added '192.168.2.152' (ECDSA) to the list of known hosts. root@192.168.2.152's password: Last failed login: Wed Jul 27 12:09:43 CST 2022 from 192.168.2.132 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Wed Jul 27 11:55:11 2022 from 192.168.2.118
②ssh 服务器地址(不指定登陆用户,默认会使用当前的用户名远程连接)
[daijun@manager161 ~]$ ssh 192.168.0.180
(2)不是第一次登录:192.168.2.152登录到192.168.2.132
③ ssh -l 用户名 服务器地址
[root@localhost ssh]# ssh -l cali 192.168.1.173 cali@192.168.1.173's password: Last login: Wed Jul 27 12:01:25 2022 from 192.168.1.101 [cali@nginx-kafka01 ~]$ exit 登出
①ssh:远程登录
远程登录的命令
④ ssh -p 端口号 ip地址 # -p :port:指定端口号
[root@nginx-kafka01 ~]# ssh -p 22 root@192.168.2.132 Last login: Fri Jul 29 16:12:45 2022 from 192.168.2.123
2、运行远程机器上的脚本或者命令
(1)在远程机机上创建文件夹。(mkdir)
[root@manager161 .ssh]# ssh 192.168.0.180 mkdir /luogg{1..10} [root@manager161 .ssh]# ssh 192.168.0.180 sudo mkdir /danyh{1..10}
(2)在远程机上执行脚本文件
[root@manager161 .ssh]# ssh 192.168.0.180 sudo bash /lianxi/scan_lan_ip.sh
1.1、sftp是什么
sftp是基于ssh协议的ftp功能,底层使用的是ssh协议。提供的是文件的上传和下载(远程登录到另外一台机器上进行文件的上传和下载)
sftp 用户名@远程主机ip地址
[root@nginx-kafka01 ssh]# sftp root@192.168.2.132 root@192.168.2.132's password: Connected to 192.168.2.132.
进行文件的上传和下载操作:以下指令操作是在使用sftp文件操作之后执行的
pwd:是查看远程机上的所在路径
lpwd:是查看本机所在路径
!ls:是查看本机所在路径里面的文件
cd:是切换远程机的路径
lcd:是切换本机的路径
get + 文件:下载
put + 文件:上传
put -r +文件夹 上传文件夹
exit 退出
sftp> pwd 查看远程机上所在路径 Remote working directory: /root sftp> lpwd 查看本机所在路径 Local working directory: /etc/ssh sftp> !ls 查看本机所在路径里面的文件 boot sshd_config ssh_host_ecdsa_key.pub ssh_host_rsa_key moduli sshd_config.bak ssh_host_ed25519_key ssh_host_rsa_key.pub ssh_config ssh_host_ecdsa_key ssh_host_ed25519_key.pub sftp> cd sftp> lcd sftp> get +文件:下载 sftp> put +文件:上传 sftp> put -r +文件夹 上传文件夹 sftp> put -r grub2 :上传grub2文件夹 sftp> exit 退出
1.2、scp是什么
scp是远程拷贝 ,底层是通过ssh协议远程连接到其他机器上,复制文件。
scp:s:ssh cp:copy
scp命令推送文件在linux服务器之间。
1、复制远程机上的文件到本机。 scp -r 用户名+远程机ip: 复制文件需要接-r选项
将192.168.2.132的root用户的/boot文件复制到当前用户/etc/ssh。就可以看到当前用户下的ssh文件里面就有boot文件。
[root@nginx-kafka01 ssh]# scp -r root@192.168.2.132:/boot /etc/ssh 源 目的地 root@192.168.2.132's password: Permission denied, please try again. root@192.168.2.132's password: [root@nginx-kafka01 ssh]# ls boot sshd_config ssh_host_ecdsa_key.pub ssh_host_rsa_key moduli sshd_config.bak ssh_host_ed25519_key ssh_host_rsa_key.pub ssh_config ssh_host_ecdsa_key ssh_host_ed25519_key.pub
2、在远程机上创建文件:
[root@manager161 lianxi9]# scp mkdir.sh root@192.168.0.180:/root mkdir.sh 100% 42 10.9KB/s 00:00
3、复制本机上的文件到远程机上。
将/etc/passwd 复制到192.168.1.173机器上的cali用户的家目录下。
[root@localhost ssh]# scp -r /etc/passwd cali@192.168.1.173:~ cali@192.168.1.173's password: passwd 100% 1692 745.6KB/s 00:00
4、在远程机上执行脚本。
cat ctrl_mysql.sh 实现传递脚本到服务器,然后执行传递过去脚本
在远程机上创建文件夹的脚本。
[root@manager161 lianxi9]# cat mkdir.sh 是具体需要做什么工作的脚本 for i in {1..10} do mkdir -p feng$i done
在本机上编写脚本实现传递脚本到服务器,然后执行传递过去脚本。
[root@manager161 lianxi9]# cat ctrl_mysql.sh 实现传递脚本到服务器,然后执行传递过去脚本 for i in {1..100} do scp /lianxi9/mkdir.sh root@192.168.0.$i:/root ssh root@192.168.0.$i bash /root/mkdir.sh done
2、ssh服务的文件配置
ssh服务的配置文件存放在:/etc/ssh
配置文件:给进程传递参数的。
[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加密算法的私钥
SSH服务详解(2)+