ssh(secure shell)协议:

是一种安全通道协议

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

openssh

服务名称:sshd

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

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

###SSH远程管理服务

SSH是一种安全通道协议,主要用于实验字符界面的远程登录,远程复制等功能。

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

SSH客户端 <____网络___>SSH服务器端

数据传输是加密的,可以防止信息泄露

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

SSH客户端:putty、xshell、CRT

SSH服务端:openssh


openssh是实现ssh协议的开源软件项目,是用于各种uinux、liunx

centos7默认已经安装了openssh,并且开启自行启动

sshd服务使用的默认端口号是22

ssh服务的默认配置文件是/etc/ssh/sshd_config

ssh_config和sshd_config都是ssh服务器的配置文件,二者的区别在于前者是针对客户端的配置文件。后者则是针对服务端的配置文件

ssh服务支持两种验证方式

1、密码验证

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

2、秘钥对验证

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

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

vim /etc/ssh/shhd_config

PasswordAuthentication yes ;启用密码验证

PubkeyAuthentication yes ;启用秘钥对验证

AuthorizedKeysFile . ssh/authorized_ keys ;指定公钥库文件

使用SSH客户端程序

1、ssh远程登录

ssh 选项 用户名@(对方的登录地址、对方的主机名)

```html/xml
例如:ssh zhangsan@192.168.206.20


注意:如果使用主机名,需要有DNS解析或者Hosts文件做主机名和ip的映射

当用户第一次登录SSH服务器时,必须接受服务器发来的ecdsa秘钥,后才能继续。接受秘钥的信息将保存到~./ssh/known_hosts文件中。秘钥验证成功后,即可登录到目标服务器的命令环境中。

-p 指定非默认端口号,缺省时默认使用22号端口
```html/xml
ssh -p 1234 zhangsan@192.168.206.3

!2、scp远程复制 (远程工具传一台,然后scp相互复制)

下行复制:
```html/xml
scp root@192.168.206.3:/etc/passwd /root/passwd10.txt ;将远端主机中的/etc/passwd文件复制到本机


上行复制:

```html/xml
scp  -r /etc/ssh/   root@192.168.206.4:/opt  :将本机的/etc/ssh/目录上传到远端主机

ps:遇到目录记得"-r",遇到端口用“-p”

!3、sftp (安全 FTP 注意:使用22号端口

由于使用了加密和解密技术,所以传输效率要比普通的ftp要低。操作语法sftp与ftp几乎一样。
```html/xml
fstp zhangsan@192.168.206.3 :用户zhangsan使用sftp连接服务器192.168.206.3


(connecting to 192.168.206.3)   ;回应显示

(.............................................);输入zhangsan的密码

```html/xml
sftp>ls

sftp> get   文件名    ;下载文件到·FTP目录

sftp> put 文件名     ;上传文件到ftp目录

sftp> quit               ; 退出

实验:配置秘钥对验证

环境:
a、客户端机206.3、服务器206.8
b、我们先去客户端生存秘钥(公、私),然后去服务端(206.8导入公钥)。最后建立连接。


1、我们首先在客户端(206.3)首先创建一个账户,设置密码。然后su,切换到这个账户的环境中
1.png
2、随后我们ssh-keygen -t ecdsa,指定算法ecdsa,回车,会出现下图所示。其中的(/home/jinyuplsp/.ssh/id_ecdsa)是私钥默认的位置。直接使用回车确认。

2.png

3、接下来我们设置私钥的passwd,然后再次确认passwd,回车后如图所示完成创建私钥文件
2.1.png

4、验证:我们cd进入.ssh文件。之后使用ls。会出现两个文件,其中带“.pub”的是公钥文件。另外一件事私钥文件。
2.2.png

5、我们使用scp服务将公钥文件传给206.8的服务端主机。(补充:如果想要指定端口来传输公钥,可以使用-p: scp -p 端口 id_ecdsa.pub root@192.168.206.8:/opt)。之后输入指定对方root账户的密码确认即可。
3.png
随后我们去客机206.3,cd去opt目录然后ls一下,发现已经收到公钥
3.1.png
6、接着我们在服务器端口(206.8)导入公钥文本。
操作步骤如下
```html/xml
su - test :切换到jinyuplsp账户
mkdir /home/test/.ssh :首先先去jinyuplsp的家目录创建一个.ssh文件
cat /opt/id_ecdsa.pub >> /home/test/.ssh/authorized_keys :随后我们去目标目录导入公钥
cat /home/test/.ssh/authorized_keys :(可选)查看公钥内容


是往/opt/id_ecdsa.pub公钥文本中追加/home/jinyuplsp/.ssh/authorized_keys的内容
随后我们使用cat查看下/home/jinyuplsp/.ssh/authorized_key的内容。公钥结果如图所示。
![1.png](https://s2.51cto.com/images/20211130/1638260024480854.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
7、随后我们去客户端206.3中使用秘钥对验证(ssh206.8服务器),使用ssh test验证,然后输入秘钥成功登陆
![2.png](https://s2.51cto.com/images/20211130/1638260163204602.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
8、我们在已经进行ssh登录的状态下退出,然后进行ssh的免交互代理。完成后我们再次使用ssh登陆服务器(206.8),发现可以免密码登录了
![4.png](https://s2.51cto.com/images/20211130/1638260308885738.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)