第四章、远程访问及控制

2022/3/25 6:22:36

本文主要是介绍第四章、远程访问及控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

SSH服务

SSH基础

什么是SSH服务器?

  • SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能;
  • SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令;
  • SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

SSH客户端<--------------网络---------------->SSH服务端

SSH优点

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

常见的ssh协议

客户端: Linux Client: ssh, scp, sftp,slogin Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclient

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

执行"*systemctl start sshd*"命令即可启动sshd 服务

sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,除了2之外还有1(有漏洞)

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

服务名称:sshd
服务端主程序:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config 
客户端配置文件:/etc/ssh/ssh_configan>

SSH原理

公钥传输原理

  • 客户端发起链接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都

    会被加密

如何使用

ssh命令 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

语法:

ssh (选项) (参数)

选项

-l:指定连接远程服务器登录用户名[远程主机用户名]
-p:指定远程服务器上的端口;
-t  ac不能之间连 a连接b再连接c   跳板连接
-1:强制使用ssh协议版本1;
-2:强制使用ssh协议版本2;
-4:强制使用IPv4地址;
-6:强制使用IPv6地址;
-A:开启认证代理连接转发功能;
-a:关闭认证代理连接转发功能;
-b:使用本机指定地址作为对应连接的源ip地址;
-C:请求压缩所有数据;
-F:指定ssh指令的配置文件;
-f:后台执行ssh指令;
-g:允许远程主机连接主机的转发端口;
-i:指定身份文件;
-N:不执行远程指令;
-o:指定配置选项;
-q:静默模式;
-X:开启X11转发功能;
-x:关闭X11转发功能;
-y:开启信任X11转发功能。

加固设置

[root@localhost .ssh]# vim /etc/ssh/sshd_config 

远程复制scp

[root@localhost .ssh]# cd /opt/
[root@localhost opt]# rm -rf *
[root@localhost opt]# ls
[root@localhost opt]# mkdir test
[root@localhost opt]# cd test/
[root@localhost test]# cp /etc/passwd /etc/shadow ./
[root@localhost test]# ls
passwd  shadow
[root@localhost test]# cd ../
[root@localhost opt]# scp -r test/ 192.168.154.20:/mnt/
root@192.168.154.20's password: 
passwd                                                                             100% 2107     3.3MB/s   00:00    
shadow                                                                            100% 1197     2.8MB/s   00:00


[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
test

sftp传输文件

登录当前用户的家目录

[root@localhost opt]# sftp 192.168.154.20
root@192.168.154.20's password: 
Connected to 192.168.154.20.
sftp> ls
anaconda-ks.cfg        initial-setup-ks.cfg   wuwei                  下载                 公共                 
图片                 文档                 桌面                 模板                 视频                 
音乐                 
sftp> put -r test/
Uploading test/ to /root/test
Entering test/
test/passwd                                                                        100% 2107     5.5MB/s   00:00    
test/shadow                                                                        100% 1197     5.1MB/s   00:00    
sftp> exit 

[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  test  wuwei  公共  模板  视频  图片  文档  下载  音乐  桌面
get下载
put上传 #默认上传到/root/
put -r 文件夹
exit bye quit 退出

免密登录

秘钥对验证

关键点

  • 免密登录的关键点在于理解谁登录谁。
  • A 生成的公钥给 B,也给 C、D,则 A 可以直接免密 SSH 登录 B、C、D

A 生成密钥

  • 在 A 机器上输入命令:

    ssh-keygen
    

    ssh-keygen --help查看加密算法 ,可以默认不写

    • 根据提示回车,共有三次交互提示,都回车即可。
  • 生成的密钥目录在:/root/.ssh

  • 写入:cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

  • 测试:ssh localhost

把 A 的公钥发给 B

  • 假设 B 机器的 ip:192.168.1.105
  • 则在 A 机器上输入:ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@192.168.1.105,根据提示输入 B 机器的 root 密码,成功会有相应提示

测试 A 免密登录到 B

  • 在 A 机器上输入命令:ssh -p 22 root@192.168.1.105,则会相应登录成功的提示
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:p3X5bjVzhcZ1t/WSbywIlkjHDzBo4Z4GfUoXXeDABTw root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|      .=**oo.    |
|     oo E==     =|
|    ..+.o+.+ . +*|
|     + =. + ..*.o|
|      = S.o.oo +.|
|     .   + ....o*|
|        .     .++|
|             ..  |
|             ..  |
+----[SHA256]-----+
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@192.168.154.20
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.154.20 (192.168.154.20)' can't be established.
ECDSA key fingerprint is SHA256:FzwuOFWa4C36FahaQIDiTJzJ431z7IHvEe9cfP07N2c.
ECDSA key fingerprint is MD5:9b:a0:39:8b:c4:f6:cb:76:8e:4c:f6:5e:47:f0:8a:72.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/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.154.20's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '22' 'root@192.168.154.20'"
and check to make sure that only the key(s) you wanted were added.

[root@localhost ~]# ssh 192.168.154.20
Last login: Fri Mar 25 03:56:11 2022 from 192.168.154.50


这篇关于第四章、远程访问及控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程