SSH服务详解(1)

简介: SSH服务详解

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)+

相关文章
|
2月前
|
安全 Linux Shell
Linux SSH(Secure Shell)服务
Linux SSH提供安全网络协议,使用公钥加密技术确保远程服务传输安全。OpenSSH是实现SSH服务的免费开源工具,允许用户加密连接远程登录Linux服务器执行任务。SSH比Telnet更安全,防止数据被截获。SSH还支持端口转发和隧道,广泛应用于系统管理和网络维护,是安全远程访问服务器的重要工具。
40 1
|
2月前
|
Ubuntu Linux 网络安全
【计算机网络】SSH 服务安装
【1月更文挑战第10天】【计算机网络】SSH 服务安装
|
8月前
|
监控 数据可视化 安全
Linux——怎样使用SSH服务实现远程UI界面本地显示
需求场景 最近几天需要实现软件的远程监控,但是实际场景又不能使用向日葵、VNC、AnyDesk、以及其他的监视软件,并且软件的整体设计也没有这块的数据上行设计。
278 0
|
9月前
|
安全 Linux 网络安全
Centos 6.8下修改SSH服务默认端口,看这一篇就够了
Centos 6.8下修改SSH服务默认端口,看这一篇就够了
165 0
|
5天前
|
监控 网络协议 网络安全
ssh服务中如何批量管理100多台机器(Paramiko、 psutil模块)、跳板机(堡垒机)
ssh服务中如何批量管理100多台机器(Paramiko、 psutil模块)、跳板机(堡垒机)
|
5天前
|
安全 Linux Shell
|
10天前
|
网络协议 Linux Shell
如何在 CentOS 中配置 SSH 服务的 TCP 端口转发
如何在 CentOS 中配置 SSH 服务的 TCP 端口转发
19 0
|
2月前
|
网络协议 安全 Shell
配置ssh服务
配置ssh服务
|
2月前
|
安全 Linux 网络安全
Linux加强篇009-使用ssh服务管理远程主机
山重水复疑无路,柳暗花明又一村
275 0
Linux加强篇009-使用ssh服务管理远程主机
|
2月前
|
Ubuntu 网络安全
Ubuntu 开启 SSH 服务
Ubuntu 开启 SSH 服务
54 0