网络相关的命令工具研究报告
SSH(远程连接工具)连接原理:
ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
SSH的工作机制:
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
SSH的加密技术:
加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
原理
- 服务器建立公钥: 每一次启动sshd 服务时,该服务会主动去找/etc/ssh/ssh_host*的文件,若系统刚刚安装完成时,由于没有这些公钥,因此sshd会主动去计算出这些需要的公钥,同时也会计算出服务器自己需要的私钥。
- 客户端主动联机请求: 若客户端想要联机到 ssh 服务器,则需要使用适当的客户端程序来联机,包括 ssh, putty 等客户端程序连接。
- 服务器传送公钥给客户端: 接收到客户端的要求后,服务器便将第一个步骤取得的公钥传送给客户端使用 (此时应是明码传送,反正公钥本来就是给大家使用的)。
- 客户端记录并比对服务器的公钥数据及随机计算自己的公私钥: 若客户端第一次连接到此服务器,则会将服务器的公钥记录到客户端的用户家目录内的 ~/.ssh/known_hosts。若是已经记录过该服务器的公钥,则客户端会去比对此次接收到的与之前的记录是否有差异。若接受此公钥,则开始计算客户端自己的公私钥。回传客户端的公钥到服务器端:
- 用户将自己的公钥传送给服务器。此时服务器:具有服务器的私钥与客户端的公钥,而客户端则是: 具有服务器的公钥以及客户端自己的私钥,你会看到,在此次联机的服务器与客户端的密钥系统 (公钥+私钥) 并不一样,所以才称为非对称加密系统。
- 开始双向加解密: (1)服务器到客户端:服务器传送数据时,拿用户的公钥加密后送出。客户端接收后,用自己的私钥解密 (2)客户端到服务器:客户端传送数据时,拿服务器的公钥加密后送出。服务器接收后,用服务器的私钥解密,这样就能保证通信安全。
SSH知识小结:
- SSH是安全的加密协议,用于远程连接Linux服务器
- SSH的默认端口是22,安全协议版本是SSH2
- SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器
- SSH客户端包含ssh连接命令和远程拷贝scp命令等
SSH参数格式
ssh [user]@host [command]
命令选项
- -1:强制使用ssh协议版本1
- -2:强制使用ssh协议版本2;
- -4:强制使用IPv4地址;
- -6:强制使用IPv6地址;
- -A:开启认证代理连接转发功能;
- -a:关闭认证代理连接转发功能;
- -b:使用本机指定地址作为对应连接的源ip地址;
- -C:请求压缩所有数据;
- -F:指定ssh指令的配置文件;
- -f:后台执行ssh指令;
- -g:允许远程主机连接主机的转发端口;
- -i:指定身份文件;
- -l:指定连接远程服务器登录用户名;
- -N:不执行远程指令;
- -o:指定配置选项;
- -p:指定远程服务器上的端口;
- -q:静默模式
- -X:开启X11转发功能;
- -x:关闭X11转发功能;
- -y:开启信任X11转发功能。
最基本用法:
SSH主要用于远程登录,假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
ssh user@remote -p port
- user是远程机用户名
- remote是远程机地址,可以是IP、域名、别名
- port是SSH Server监听的端口号
下面通过windows powershell调用SSH命令登录linux虚拟机,且成功登录。
PS C:\Users\guo> ssh guo@192.168.83.129 -p port
Bad port 'port'
PS C:\Users\guo> ssh guo@192.168.83.129 -p 22
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
280 updates can be installed immediately.
151 of these updates are security updates.
有新版本“19.10”可供使用
运行“do-release-upgrade”来升级到新版本。
Last login: Wed Nov 27 18:12:04 2019 from 192.168.83.1
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
280 updates can be installed immediately.
151 of these updates are security updates.
有新版本“19.10”可供使用
运行“do-release-upgrade”来升级到新版本。
Last login: Wed Nov 27 18:12:04 2019 from 192.168.83.1
快速登录
每次登录都需要输入用户名、ip地址、和密码,为了方便操作,可以使用Xshell实现快速。
- 首先在本地生成公钥私钥。使用ssh-keygen语句。
guo@guo-virtual-machine:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/guo/.ssh/id_rsa):
/home/guo/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/guo/.ssh/id_rsa.
Your public key has been saved in /home/guo/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IK05b0Dohw0Qg8o0ZyFvcia8GfbSfO3rFMAul7pg/V8 guo@guo-virtual-machine
The key's randomart image is:
+---[RSA 2048]----+
|=o .. |
|o=o+.. |
|+**=ooo |
|oo&=.++. |
| +o=B= oS |
| o.=+. . |
| o o oo E |
|. . o.. o |
| . .o+ |
+----[SHA256]-----+
此时,在本地计算机内生成了公钥私钥文件/home/guo/.ssh/id_rsa.pub.、/home/guo/.ssh/id_rsa.。
将公钥保存在远端的.ssh/authorized_keys中。
设置Xshell,如图所示。
- 直接使用Xshell双击已创建的连接登录远端即可。
[C:\~]$
Connecting to 192.168.83.129:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
280 updates can be installed immediately.
151 of these updates are security updates.
有新版本“19.10”可供使用
运行“do-release-upgrade”来升级到新版本。
Last login: Wed Nov 27 19:23:56 2019 from 192.168.83.1
guo@guo-virtual-machine:~$ ^C
原文地址:https://www.cnblogs.com/guoyuhuan/p/11945041.html
- js中多个Date对象变量间赋值互相影响
- 并发编程之Executor,Executors,ExecutorService和ThreadPoolExecutor
- 【DeveMobile实例】d3.js 与Trianglify 制作SVG格式Low-Poly 特效
- 未来人工智能将把人类分为3层,而你会在哪一层呢?
- IIS 7.0探索用于 Windows Vista 的 Web 服务器和更多内容
- 初学Python 之抓取当当网图书页面目录并保存到txt文件
- JavaScript 基础(二)数组
- 限制扫码付款额度,支付宝和微信要被“祭旗”?
- 拖动条SeekBar及星级评分条
- 【DeveMobile实例】利用Mobile Detect 制作单独移动端页面项目
- 互联网+智能物流高峰论坛举行运的易现场签约完成战略布局
- Quartz.net通过配置文件来完成作业调度
- JavaScript 基础(一)
- 我也来说说.net开源
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python 技术篇-使用opencv读取图片实例演示,python安装opencv库
- 关于页更改并加入一些在线服务
- Hadoop-2.6.0为基础的Hive安装
- Python 技术篇-opencv读取中文路径图片报错及解决办法
- Javaweb鼠标事件案例分析—鼠标移入移出表格颜色变化
- docker registry V2私有仓库搭建
- Python 路径问题:cv2.error: OpenCV(4.1.0)...size.width>0 && size.height>0 in function 'cv::imshow'. 原因与解决
- 算法案例分析—字符串模式匹配算法
- Docker-软件工程集装箱技术
- PyQt5 技术篇-获取电脑屏幕桌面的宽、高和分辨率
- 使用Python快速抠图
- 值得白嫖的数据库常用操作语句汇总(数据库、数据表、数据操作)
- JavaScript 技术篇-js正则表达式匹配字符串左右两边是否包含空格
- 初入编程吓破胆?那是你还不懂这些!(高能预警)
- 振兴杯试题功能设计(准备)