目录
Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。它是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。目前已经成为Linux系统的标准配置。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文主要介绍OpenSSH免费开源实现在Ubuntu中的应用,如果要在Windows中使用SSH,需要使用另一个软件PuTTY。
SSH之所以能够保证安全,原因在于它采用了非对称加密技术(RSA)加密了所有传输的数据。
传统的网络服务程序,如FTP、Pop和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
但并不是说SSH就是绝对安全的,因为它本身提供两种级别的验证方法:
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。
第二种级别(基于密钥的安全验证):你必须为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。
SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑上是否安装了客户端和服务器。
dpkg -l | grep ssh
如果只是想远程登陆别的机器只需要安装客户端(Ubuntu默认安装了客户端),如果要开放本机的SSH服务就需要安装服务器。
sudo apt-get install openssh-client
sudo apt-get install openssh-server
首先确认ssh-server是否已经启动了
ps -e | grep ssh
如图,sshd 表示ssh-server已经启动了。如果没有启动,可以使用如下命令启动:
sudo /etc/init.d/ssh start
停止和重启ssh服务的命令如下:
sudo /etc/init.d/ssh stop #server停止ssh服务
sudo /etc/init.d/ssh restart #server重启ssh服务
接下来就可以进行使用客户机远程登录服务器了~
一、口令登录
口令登录非常简单,只需要一条命令,命令格式为: ssh 客户端用户名@服务器ip地址 eg:
ssh [email protected]
如果需要调用图形界面程序可以使用 -X 选项
ssh -X [email protected]
如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。
ssh 192.168.0.1
还要说明的是,SSH服务的默认端口是22,也就是说,如果你不设置端口的话登录请求会自动送到远程主机的22端口。我们可以使用 -p 选项来修改端口号,比如连接到服务器的1234端口:
ssh -p 1234 [email protected]
客户机必须要知道服务器的ip地址。可以在服务器端电脑上利用 ifconfig 命令查看该机的ip地址:
如果是第一次登录远程主机,系统会给出下面提示:
意思是,该远程主机的真实性无法确定,其公钥指纹为 SHA256:FFobshqrGOachj7Xp4LsJ9+xkNBlyyOe8ZIPl7K+qQI,确定想要继续连接吗?
输入yes即可。这时系统会提示远程主机被添加到已知主机列表。
然后会要求我们输入远程主机的密码,输入的密码正确就可以成功登录了。命令提示符会修改为远程主机的提示符,现在开始,终端中输入的命令都将在服务器中执行。
我们可以通过 Ctrl+D 或者 exit 命令退出远程登录。
二、公钥登录
每次登录远程主机都需要输入密码是很不方便的,如果想要省去这一步骤,可以利用密钥对进行连接,还可以提高安全性。
1、在本机生成密钥对
使用ssh-keygen命令生成密钥对:
ssh-keygen -t rsa #-t表示类型选项,这里采用rsa加密算法
然后根据提示一步步的按enter键即可(其中有一个提示是要求设置私钥口令passphrase,不设置则为空,这里看心情吧,如果不放心私钥的安全可以设置一下),执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub。
2、将公钥复制到远程主机中
使用ssh-copy-id命令将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key 文件中
ssh-copy-id [email protected]
经过以上两个步骤,以后再登录这个远程主机就不用再输入密码了。
cheers~
使用远程主机不中断的跑程序
当我们利用ssh在远程主机上跑程序的时候,只要关闭了终端就会中断ssh连接,然后远程主机上正在跑的程序或者服务就会自动停止运行。我们可以利用 nohup + 需要运行的程序 使运行的程序在切断ssh连接的时候仍然能够继续在远程主机中运行。nohup即no hang up(不挂起)。
除此之外还有很多远程操作应用,包括 数据传输、端口操作(将不加密的网络连接绑定到ssh端口实现间接加密) 等等,可以参考柚子皮大神的博客:https://blog.csdn.net/pipisorry/article/details/52269785
文章浏览阅读8.4k次,点赞5次,收藏62次。ARM、armv8、armv9、arm架构、arm视频、添加vx : arm_2023 获取更多资料, arm资料、arm下载、arm学习、arm免费、arm课程,PE - processing elementARM体系结构定义了抽象机器的行为,称为处理元素(processing element),通常缩写为PE。与ARM体系结构兼容的实现必须符合处理元素所描述的行为。RISC架构ARM架构是一个精简指令集计算机(RISC)架构,具有以下RISC架构特征:- 一个大的统一寄存器文件。- 一种_arm v8架构参考手册
文章浏览阅读1.1k次,点赞20次,收藏17次。多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测_matlab 概率稀疏自注意力
文章浏览阅读2.9k次。计算机和外部交换信息又称为通信(Communication)。按数据传送方式分为并行通信和串行通信两种基本方式。1、并行通信并行通信就是把传送数据的n位数用n条传输线同时传送。其优点是传送速度快、信息率高。并且,通常只要提供二条控制和状态线,就能完成CPU和接口及设备之间的协调、应答,实现异步传输。它是计算机系统和计算机控制系统中常常采用的通信方式。但是并行通信所需的传输线(通常为电缆线)多,增加..._分别写出计算机移动终端连接外围设备的主要方式
文章浏览阅读216次。ThinkPHP5框架知识付费系统uniapp+mysql可以部署PC+app+公众号+小程序版本。导师入住,添加课程和商品,出售后分红提现。vip svip功能。
文章浏览阅读805次。电源管理(PMIC)TPS63070RNMR、TPS650942A0RSKR、LM5175RHFR器件介绍、应用及特点。_tps63070
文章浏览阅读4.9k次。Axios 是一个基于promise的HTTP库,该库是一个更好的替代ajax向后端发送数据或请求数据的前端组件库,其本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范,如下案例运用axios向后端提交JSON字符串,后端通过Flask响应请求并处理。Python后端使用Flask接收并处理前端发送过来的JSON字符串。前端发送数据的第一种方式。前端发送数据的第二种方式。_flask 框架下axios
文章浏览阅读2.4k次。这个问题官方已经说了,不支持win下的。所以可能不管是安装-cpu或者-gpu都不行的,无论有没有gpupip install faiss-cpuCollecting faiss-cpu Using cached https://files.pythonhosted.org/packages/6b/79/3fc59c466abcfed5fa9b40915a6564576b7615ac9201eac67156730262c7/faiss-cpu-1.6.3.tar.gzRequirement_error: failed building wheel for faiss-cpu
文章浏览阅读7.4k次,点赞12次,收藏103次。元素的定位是自动化测试核心。要操作一个对象,首先要识别定位或找到这个对象。为了实现网页整体布局,我们先要知道,一个元素,是如何定位到页面上的某个位置的,这就是元素定位。_自动化测试tag_name
文章浏览阅读1k次。linux下安装Marvell Yukon网卡驱动【提要】 我的主板是华硕P4P800 SE,集成Marvell Yukon网卡,安装redhat linux9后无法识别网卡,故需要费一点折腾了。。最终解决了linux中上网的问题,但引发了windows中无法连接的麻烦,暂时搁着先了。。。(2006-11-25回头圆满解决!)【内容】问题一开始就存在,我就一般在windows系统中寻找资料,下载资源,然后转到linux中,加载windows分区,获取文件。经过一段时间后,终于还是认真解决它好了。在windo_yk51驱动
文章浏览阅读1.4k次,点赞3次,收藏2次。直接拷贝上面的一段代码,保存到文本文档,然后把.txt后缀改为.reg,然后右键该文件,点击合并即可。这样,鼠标右键菜单就有open cmd here即在当前路径打开cmd这个选项了,但是这个是普通用户运行cmd。有时候,当要在某个文件夹下打开cmd终端时,如果没有右键菜单快捷方式,就得打开cmd后,使用cd方式进入 当前目录,很麻烦。同时还会添加另一个选项,以管理员身份运行(A) ,这个是以管理员身份运行cmd。文件名:右键在此处运行cmd.reg。以下的脚本,可以帮你解决这个问题。_we右键进入cmd
文章浏览阅读136次。《深入理解计算机系统》第三章——程序的机器级表示。作者首先讲解了汇编代码和机器代码的关系,阐述了汇编承上启下的作用;接着从机器语言IA32着手,分别讲述了如何存储数据、如何访问数据、如何完成运算以及如何进行跳转。通过这些步骤,又告诉了我们分支语句、循环语句是怎么完成的,函数调用、栈帧结构以及递归过程。最后能通过编译器产生的汇编代码表示,我们要了解编译器和它的优化能力,知道编译器能为我们完成哪些工作..._phthon 汇编语言 机器语言
文章浏览阅读3w次,点赞44次,收藏271次。闲来无事,整理了一些对之前帮同学做过的小项目,希望能 帮到正在紧张准备毕设项目的你!项目挺多总有一个适合你! 如果有问题需要帮忙 我也可以帮忙指导指导。说明: 以下项目均使用Android studio开发,代码使用java语言,布局文件使用xml,后端接口部署在自己的阿里云上面类似京东商城app首先是登录、注册,然后进入首页使用viewpager+fragment实现四个不同tab的切换,tab包括(商品列表、促销商品、购物车、我的) @Override protected vo_app毕业设计