ssh远程登录的操作以及原理,简单说说

// 以下记录基于   ubuntu:

ssh的简单认识:

安装ssh   sudo apt-get install ssh   // 假定当前配置的软件源可用

ssh服务器监听的端口默认为22.

ssh服务器的配置文件位于:/etc/ssh/sshd_config   // 也可以 cat 一下  /etc/ssh/ 下的其他文件。多逛逛无害,如果时间允许

登录远程主机的命令:   ssh [email protected]    // remotHost为远程主机的ip地址,或者域名

衍生的命令(远程拷贝)      scp /home/xiaocc/demo.war  [email protected]:/var/tomcat/webapps/  // 该命令将本地的demo.war 文件拷贝到远程主机:  remoteHost 的stage用户的   /var/tomcat/webapps目录下

生成公钥和私钥匙的命令:

ssh-keygen -t rsa  // -t 后面跟上  rsa 或者dsa

生成的公钥和对应的密钥默认位于 ~/.ssh/

~/.ssh/id_rsa  // 私钥

~/.ssh/id_rsa.pub

同时加个命令   chmod 600 ~/.ssh/id_rsa        //仅对当前用户可读可写

==========================================

以上:可以满足基本干活的需要了。

接着,简单说说原理:

ssh 的客户端和服务器都会拥有一个公钥和对应的私钥。用公钥对一段数据进行加密,有且仅有对应的私钥能对该段数据解密,反之亦然。公钥会在网络上传播,但私钥不会在网络上传输。

登录方式1:基于远程主机的用户和密码登录

  1. 客户端  通过 ssh 命令请求登录 远程服务器
  2. 服务器 收到请求后,将自己的公钥发送给客户端
  3. 客户端利用收到的服务端的公钥对登录密码进行加密,将加密后的密码发送给服务器。
  4. 服务器利用自己的私钥对收到的密码进行解密,并且验证其密码,如果密码正确,允许该客户端登录。

    // 客户端登录成功。    用  exit 命令退出登录。  登录超时 时间取决于服务器的配置。

登录方式2:基于客户端公钥的登录     //必须对服务器进行配置,并且使配置生效。

具体   cat /etc/ssh/sshd_config。

  1. 客户端将自己的公钥事先保存在服务器中,一般为   ~/.ssh/authorized_keys  中。 这就是为什么上司不用告诉我们远程主机的密码,只叫我们把  ~/.ssh/id_rsa.pub  发给他我们就能登录远程服务器干活了。。。
  2. 客户端 通过ssh 命令请求 登录远程服务器时,服务器将一段随机码发回给客户端。客户端用自己私钥对该随机串加密后发送到服务器。服务器利用该客户端的公钥解密之后即可完成认证。

    //至于:为啥服务器端会知道,当前登录的客户端是否已经把公钥保存在本服务器中了? 这就是具体实现上的事情了。现在还没有去看具体的实现是怎样的。 如果有人知道,请多多赐教。

中间人攻击:

真对于第一种登录方式,

可能会有第三方截获ssh登录请求,并且将第三方自己的公钥发过来,客户端不知道收到的公钥是不是目的服务器的,就把远端的登录密码加密后发出去了,第三方用私钥解密之后就可以得到真正的远端服务器的密码。从而第三方再以客户端的身份登录到远程服务器。对服务器进行破坏。

// 突然想到一句话:请不要将钱转到陌生的声称电信,公安的银行卡中。

造成该问题的原因:

客户端不知道收到的公钥到底是不是由真正的目的服务器发来的。

这下好了,目的服务器得事先公布自己的公钥。当客户端收到远端服务器的公钥时,与目的服务器自己事先公布的公钥对比,

就可以知道来者何人了。

在linux中,第一次登录一个陌生的远端服务器时,会有这样的提示:

The authenticity of host ‘127.0.0.1 (127.0.0.1)‘ can‘t be established.

ECDSA key fingerprint is 50:76:f4:8e:eb:38:c6:e9:d5:5b:c7:49:77:a9:4c:b4.

Are you sure you want to continue connecting (yes/no)?

//重要提醒:请不要将钱转到陌生的声称电信,公安的银行卡中。  哈哈,一样的道理。

当对一个远程主机进行了第一次登录之后,在客户端本身的  ~/.ssh/  目录下会生成:

know_hosts  // 好了,我记着这个仔了,他是我远方亲戚,信得过。

以后再登录这个远程服务器,就不会有上面的提示了。

======

个人的目前为止的理解,以上。

时间: 2024-08-09 11:19:58

ssh远程登录的操作以及原理,简单说说的相关文章

[Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

1. ssh客户端生成key 1 $ ssh-keygen -t rsa -b 4096 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): vagrantid_rsa 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6

SSH远程登录、.sh文件后缀运行、l l命令结果说明、VIM模式切换

目录 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 .sh文件后缀运行 l l命令结果说明 VIM模式切换 SSH远程登录..sh文件后缀运行.l l命令结果说明.VIM模式切换 SSH远程安全登录 SSH为网络协议,专门为远程登录会话和其他网络服务提供安全性的协议,用于在计算机之间的加密登录,对数据进行加密. SSH主要用于远程登录,主要有口令登录和公钥登录,现简单说下口令登录基本用法: #使用root账户登录远程主机 默认端口是22 可以修改端口

ssh远程登录

·网卡基本设置 安装linux完成后,如果网络连接模式是使用桥接模式,我们可以使用命令: # dhclient  #来自动获得IP(前提是本地有dhcp服务器路由),再使用命令: # ifconfig  #查看网卡信息 eth0     Link encap:Ethernet  HWaddr00:0C:29:B2:2F:0C           inet addr:10.10.10.102 Bcast:10.10.10.255 Mask:255.255.255.0          inet6 

使用kernel编译+busybox定制Linux系统--实现ssh远程登录+web服务的迷你主机

在运维工作中很多时候我们需要裁剪Linux系统,减少系统性能的消耗,提升系统服务的性能,以往通过光盘安装的Linux都是比较臃肿的,但出现这样的需求后,我可以对Linux进行重新编译再busybox工具移植即可实现,接下来我们一步一步实现kernel编译+busybox定制Linux系统--实现ssh远程登录+web服务: 实现过程如下: 一.规划子主机的磁盘存储规划 1.添加一个大小为10G的硬盘 2.查询系统硬件信息参数: # lspci  00:00.0 Host bridge: Inte

树莓派初入门(1):SSH远程登录与VNC远程桌面

前言: 本文主要讲解,对于一个无树莓派显示屏,无键盘,无鼠标,手边只有手机,电脑和一个已烧录好raspbian-stretch系统的树莓派3B+的玩家,如何进行远程登录,进而可以进程桌面的连接. 工具: 1.手机(目的是开启一个局域网热点,让电脑和树莓派可以处于同一个局域网内) 2.电脑(iPad,手机等可以进行远程连接的工具) 3.树莓派3B+(已烧录好raspbian-stretch系统镜像) Let's get started! 第一步:准备工作 系统镜像已烧录至SD卡中.详细步骤可看树莓

Linux修改SSH远程登录端口 --服务器安全篇

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px SimSun; color: #333333; background-color: #ffffff } span.s1 { } span.s2 { color: #ff0000 } 1.修改SSH远程登录端口为5000 输入 vi/etc/ssh/sshd_config Port 5000                        #把'#Port 22'修改为'Port 5000':(

ssh远程登录Jupyter notebook(七月GPU服务器)

本文为博主本人原创,禁止转载! 网上查了好多教程,自己慢慢折腾慢慢琢磨,终于搞出来如何通过ssh远程登录7月VIP的GPU服务器,写个教程给大家分享一下: 首先,我们要知道,从本地登录到我们的GPU服务器,需要经过以下两个步骤: 1.从本地登录到7月的外部服务器. 2.进入外部服务器之后,通过跳板机进入GPU服务器. 而jupyter的相关套件被安装在了GPU服务器里,所以我们要通过本地浏览器打开GPU服务器里的jupyter,需要走两个步骤,即先将GPU的jupyter导入到外部服务器的一个端

ssh远程登录linux live系统

要想ssh远程登录,需要准备两件事:配置同网段IP和开启SSH服务. 由于live系统没有IP,所以首先需要配置IP. 我的live系统是在虚拟机上启动的,宿主IP为192.168.230.1,live系统的IP我设置为192.168.230.180: #ifconfig eth0 192.168.230.180 然后在SecurityCRT上连接live系统,输入密码时发现live系统也没有用户密码.这时候若不输密码或者随便输入一个密码,SecurityCRT也是不让连接的.所以需要在live

putty生成密钥SSH远程登录注意步骤及报错解决方法

putty生成密钥SSH远程登录注意步骤及报错解决方法 报"Putty server refused our key"(解决)排查步骤: 1..ssh文件夹权限和authorized_keys文件权限 1-1创建.SSH目录及authorized_keys文件 mkdir –p /root/.ssh touch authorized_keys 1-2 修改目录及文件权限 Chmod 700 .ssh Chmod 600 authorized_keys 2. Selinux安全机制和Ip