文档章节

4、Linux下ssh的使用!

刘付kin
 刘付kin
发布于 2016/12/08 22:28
字数 1418
阅读 12
收藏 0

#1:查看系统是否已经安装了ssh套件,或则系统是否已经启动了ssh服务

```
dpkg -l openssh-server  //查看是否安装服务器端
dpkg -l openssh-client  //查看是否安装客户端

netstat -tl             //查看系统是否已经启动了ssh服务
  -t:表示tcp协议
  -l:表示listen状态
```

#2:生成密钥。

在当前用户的主目录下生成密钥,并且放在一个.ssh的文件夹中。

  • 1:生成密钥

      ssh-keygen -t rsa -f ~/.ssh/id_rsa
      ********提示输入密码****************
      Enter passphrase (empty for no passphrase): 
      Enter same passphrase again: 
      ********进入~/.ssh目录***************
      cd ~/.ssh/
    
  • 2:将密钥复制进入一个名字为"authorized_keys"中。

      这个名字是默认的,不能改变,
      因为系统就是根据这个文件来判断那些机器的公钥已经保存在这里了,
      可以进行免钥登录。
      cat id_rsa.pub >> authorized_keys  
    

    (这是放在本地的authorized_keys,是为了能够ssh localhost)

  • 3:分发密钥 (这是最主要的!因为目的主机有client机器的公钥才能免密登录)

      ssh-copy-id 目的主机IP
      root[@hadoop2](https://my.oschina.net/hadoop2)'s password:
    
      注意,不管先前目的主机有没有~/.ssh/authorized_keys,
      都会会在“主目录下”生成.ssh/authorized_keys,这个文件就包含着本机的公钥了。
    
  • 4:登录到目的主机有两种方式:

    1:)基于用户和口令的登录

      ssh liufukin[@hadoop2](https://my.oschina.net/hadoop2)
      liufukin[@hadoop2](https://my.oschina.net/hadoop2)'s password: 
      //这边输入的是目的主机开机登录时的密码,这个是每一次都要输入的。不能够做免密钥登录。
    

    2:)基于公私钥的验证登录(可以用于免密钥登录)

      ssh hadoop2
      Enter passphrase for key '/root/.ssh/id_rsa':  
      //这里输入的是客户机的公钥。而不是目的主机的公钥。
    

    注意,这里的密码一定是客户机这边的公钥。

  • 5:退出登录:exit

#总结:

  • 一:那么具体登录到目的主机的那个用户呢?

      假设客户机中当前用户为root
      ssh hadoop2     //将会默认登录到目的主机hadoop2对应的root中
      ssh liufukin[@hadoop2](https://my.oschina.net/hadoop2) //将会登录到目的主机hadoop2对应的liufukin中(不管liufukin存不存在)
    
      接下来就会判断目的主机中的“对应账户主目录”下有没有
      .ssh/authorized_keys文件,同时这个文件中有没有“客户机”的公钥。 
      来确定使用哪种登录方式。
      ---也就是接下来的第二步-----
    
  • 二:ssh登录分为两种:

    1:)基于用户和口令的登录(每次都需要输入密码)

      当## 目的主机 ##中对应的用户下没有
      .ssh/authorized_keys或者这个文件中没有## 客户机 ##的公钥时,
      就会提示输入这个账户的登录密码。
      liufukin[@hadoop2](https://my.oschina.net/hadoop2)'s password:
    

    2:)基于公私钥认证登录(可以实现免密钥登录)

      当## 目的主机 ##中对应的用户下存在
      .ssh/authorized_keys并且这个文件中有## 客户机 ##的公钥时,
      就会提示输入公钥
      Enter passphrase for key '/root/.ssh/id_rsa':  
    
      注意:如果三次输入公钥都不正确,则会自动转回口令密码
      Enter passphrase for key '/home/liufukin/.ssh/id_rsa': 
      Enter passphrase for key '/home/liufukin/.ssh/id_rsa': 
      Enter passphrase for key '/home/liufukin/.ssh/id_rsa': 
      liufukin@hadoop2's password: 
    

#三:ssh简介原理

  简单说,SSH是一种网络协议,用于计算机之间的加密登录。
  最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。
  1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,
  成为互联网安全的一个基本解决方案,迅速在全世界获得推
  广,目前已经成为Linux系统的标准配置。
  需要指出的是,SSH只是一种协议,存在多种实现,既
  有商业实现,也有开源实现。本文针对的实现是OpenSSH,
  它是自由软件,应用非常广泛。

实现的原理:

  • (1)客户机向远程主机发送登录请求,并且把自己的公钥发送给远程主机。

  • (2)远程主机收到用户的登录请求,首先判断对应的用户主目录下是否存在 .ssh/authorized_keys并且这个文件中有没有有## 客户机 ##的公钥时,

    如果条件不成立,就会使用## 账户口令登录登录的方式 ##。 同时向客户机返回1.## 自己的公钥 ##

    如果条件成立,则会使用## 公私钥登录的方式 ##。 同时向客户机返回1.自己的公钥; 2.客户机公钥加密过的## 一些验证信息 ##

账户口令登录登录的方式:(每次都需要输入密码,不能免密钥登录)

  • (3)用户使用这个公钥,将登录密码加密后,发送回来。
  • (4)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

基于公私钥登录的方式:(可以实现 免密钥登录)

能用到这种方式的前提是,用户已经将自己的公钥储存在远程主机上, 这个是重点,也就是所谓的“公密钥分发”。

  • (3)用户用自己的私钥解密“随机信息”后,接着用“私钥”加密签名该“随机信息”,最后再用远程主机的公钥加密发送给远程主机。

  • (4)远程主机先用自己的私钥解密,然后在用事先储存的客户机公钥进行解密认证,得出“随机信息”,如果“随机信息”正确,就证明用户是可信的,直接允许登录shell,不再要求密码。

© 著作权归作者所有

共有 人打赏支持
刘付kin
粉丝 6
博文 98
码字总数 71383
作品 0
深圳
linux系统中scp命令的用法

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp在网络上不同的主机之间复制文...

李长春
2012/02/01
0
0
远程连接Kali Linux使用PuTTY实现SSH远程连接

远程连接Kali Linux使用PuTTY实现SSH远程连接 本书主要以在Android设备上安装的Kali Linux操作系统为主,介绍基于Bash Shell渗透测试。由于在默认情况下,在Android设备上安装的Kali操作系统...

大学霸
2015/01/22
0
0
SecureCRT 与 sftp

在SecureCRT的连接回话里,有一个“连接sftp标签页”选项,我师傅用来做本机(Win7)和虚拟机文件交换的,感觉挺好用的,比 FTP Client 都好用(vsftpd的安装可是坑惨我了啊!),所以对这个...

hanzhankang
2014/03/06
0
0
Linux 上SSH 服务的配置和管理

基本上Linux的网络服务器在远程操作大多时候都是使用SSH来配置、管理服务器。现在我们就来分享一下简单配置Linux的SSH服务。 1.检查一下默认安装的系统是否安装了SSH服务: chkconfig --list...

cnBrave
06/26
0
0
windows和ubuntu(linux)之间的rsync

windows上安装cwRsync,ubuntu上安装openssh和rsync 2. 建立home和.ssh目录 home建哪里自己定,我是直接在cwRsync目录下面建了个home。需要注意一下的是.ssh目录的建立,直接在资源管理器里面...

RuralHunter
2012/12/25
0
11

没有更多内容

加载失败,请刷新页面

加载更多

Bash各类扩展详解

Bash各类扩展详解 Bash中主要包括大括号扩展、波浪号扩展、变量扩展、子命令扩展、文件名扩展和算数扩展。这些扩展组合在一起为Bash带来了极大的易用性。掌握这些扩展的用法和功能,能够为B...

小陶小陶
40分钟前
1
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
5
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
今天
1
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
今天
1
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部