第四章、远程访问及控制
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
这篇关于第四章、远程访问及控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南