在Linux系统中。OpenSSH是眼下最流行的远程系统登录与文件传输应用,也是传统Telenet、FTP和R系列等网络应用的换代产品。

当中,ssh(Secure Shell)能够替代telnet、rlogin和rsh,scp(Secure Copy)与sftp(Secure FTP)能后替代ftp。

OpenSSH採用密钥的方式对数据进行加密,确保传输数据的安全。在正式開始传输数据之前,两方首先要交换密钥,当收到对方的数据时。再利用密钥和对应的程序对数据进行解密。

这样的加密的传输数据有助于防止非法用户获取数据信息。

OpenSSH採用随机的方式生成公私密钥。

密钥通常仅仅需生成一次,必要时也能够又一次制作。

当使用ssh命令登录到远程系统时,OpenSSHserver的sshd守护进行将会发送一个公钥,OpenSSHclient软件ssh将会提示用户确认是否接收发送的公钥。同一时候,OpenSSHclient也会向server回传一个密钥,使OpenSSH连接两方的每一个系统都拥有对方的密钥,因而可以解密对方经由加密链路发送的加密数据。

OpenSSHserver的公钥与私玥均存储在/etc/ssh文件夹中。在OpenSSHclient,用户收到的全部公钥,以及提供密钥的OpenSSHserver的IP地址均存储在用户主文件夹下的~/.ssh/known_hosts文件里(.ssh是一个隐藏文件夹)。假设密钥与IP地址不再匹配。OpenSSH将会觉得某个环节出了问题。

比如。又一次安装操作系统或者升级OpenSSH都会导致系统再次生成新的密钥,恶意的网络攻击也会造成密钥的变动。因此,当密钥发生变化时,总是应当先了解密钥发生变化的原因,以确保网络訪问期间的数据安全。

1 安装OpenSSHserver

在Ubuntu中,OpenSSH的client作为一个基础系统软件会随这系统一起安装。但OpenSSHserver须要单独安装。安装openssh-serverserver软件包,能够使用apt-get、aptitude或synaptic等软件工具。

$ sudo apt-get install openssh-server

安装之后。能够使用下面命令验证OpenSSHserver的sshd守护进程是否已开启。

$ pidof sshd

2 使用SSH登录到远程系统

在OpenSSH中,ssh是一个重要的client应用程序。利用ssh,能够採用加密的通信方式。登录到远程系统,其语法格式例如以下:

ssh [options] [-l login_name][user@]hostname [command]

当中,”-llogin_name”选项用于指定username。表示以哪一个用户身份登录到远程系统。假设不提供username,则以当前用户的身份登录到远程系统。比如,以下命令形式表示以webgod用户身份,採用默认的22port。登录到远程系统(注意,这里”Welcome to Ubuntu 12.04 LTS (GNU/Linux) ……https://helo.ubunut.com/”出自/etc/motd文件)。除了”-l”选项之外,为了以其它用户身份登录到远程系统,还能够使用”user@hostname”的方式登录到远程系统。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF2aWRza3kxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

第一次使用ssh登录到远程系统时。ssh将会给出一个警告信息,提示用户确认连接的远程系统是否正确。

假设用户确认yes,ssh将会在用户主文件夹的~/.ssh/known_hosts文件里存储远程系统的密钥。同一时候也会把client用户的密钥发送到远程系统。当用户再次登录到同一远程系统时,就不会再出现提示信息了。

3 使用ssh运行远程系统命令

详细使用方法。在ssh命令后添加一条命令。命令前后使用双引號括起来。

$ ssh webgod@10.203.138.129 “uname -r”

这样的一次性登录。运行远程命令,然后马上返回的功能是很实用的。

4 使用SCP替代FTP

从网络通信角度来看,FTP的传输数据方式是不安全的,由于FTP协议在网络中传输的username、password和数据没有採取不论什么加密措施。比較安全的方法是採用OpenSSH的SFTP和SCP。

scp是OpenSSH中的还有一个重要client软件。scp命令的格式例如以下:

scp [[user@host1:]file1[[user@]host2:]file2

第一个參数是源文件。第二个參数是目的文件。当须要复制远程系统中的文件时。SCP首先须要成功登录到远程系统中。然后才干開始传输文件,因此要求提供远程系统的名字、username和password。

利用scp下载文件

比如,要把远程系统中的~/.ssh/id_rsa.pub文件拷贝到本地系统的/tmp文件夹中。

$ scp webgod@10.203.138.129:~/.ssh/id_rsa.pub /tmp

假定已经把sshd守护进程监听的TCPport改动为435。要使用该port进行文件复制,则能够用例如以下命令。

$ scp -P 534 webgod@10.203.138.129:~/.ssh/id_rsa.pub /tmp

利用scp上传文件

$ scp /etc/hosts webgod@10.203.138.129:/tmp

         $ scp -P 435 /etc/hosts webgod@10.203.138.129: /tmp

SSH学习之中的一个 OpenSSH基本使用的更多相关文章

  1. netty深入学习之中的一个: 入门篇

    netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java ...

  2. Scapy基础学习之中的一个

    关于Scapy Scapy的是一个强大的交互式数据包处理程序(使用python编写). 它可以伪造或者解码大量的网络协议数据包,可以发送.捕捉.匹配请求和回复包等等.它可以非常easy地处理一些典型操 ...

  3. Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy

    1 前言 Python有许多IDE能够用,官方自己也带了一个,Eclipse也能够. 但我在使用各种IDE之后,发现用Sublime Text是最好用的一个.因此.我都是用Sublime Text来编 ...

  4. Java并发学习之中的一个——线程的创建

    本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.与每一个Java语言中的元素一样,线程是对象.在Java中,我们有两种方式创建线程: a.通过直接继承thread类,然后覆盖run方法. b ...

  5. input子系统驱动学习之中的一个

        刚開始学习linux这门课就被分配编写一个设备的input子系统驱动.这对我的确有点困难.只是实际的操作中发现困难远比我想象的要大的多.本以为依照老师课上的步骤就行非常快的完毕这项任务.后来发 ...

  6. mysql学习之中的一个:mysql安装

    我用的时mac系统,本来想在mac系统上装一个,可是发现mac系统始终无法用password登入到本机server,很奇怪的问题(在stackflow上看了些回复,也没有找到原因),最后仅仅好装到虚拟 ...

  7. Oschina 安卓client源代码学习之中的一个

    今天主要研究一下两个功能 (1)双击返回键退出程序 (2)接近完美地退出程序 (1) 在非常多应用程序里都有一个功能,就是点击返回键,之后提示你再点击返回键就退出程序. 之前一直非常好奇这是怎么实现的 ...

  8. 数据库学习之中的一个: 在 Oracle sql developer上执行SQL必知必会脚本

    1 首先在開始菜单中打开sql developer: 2. 创建数据库连接 点击左上角的加号 在弹出的对话框中填写username和password 測试假设成功则点击连接,记得角色要写SYSDBA ...

  9. Gravitational Teleport 是一个先进的 SSH 服务器,基于 Golang SSH 构建,完全兼容 OpenSSH

    Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器.其目的是为了替代 sshd.Teleport 可以轻松让团队 ...

随机推荐

  1. Resin 优化配置

    1.在resin.conf中的session-config内部添加 <session-max>4096</session-max> <session-timeout> ...

  2. [HDU 4261] Estimation

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4261 [算法] 首先,有一个结论 : | a[1] - k | + | a[2] - k | + ...

  3. mysql 从库落后主库太多优化

    有时候为了避免master.info和中继日志崩溃,在容忍额外的fsync()带来的开销,推荐设置sync_master_info = 1sync_relay_log = 1sync_relay_lo ...

  4. php打马赛克

    本文实例讲述了php实现图片局部打马赛克的方法.分享给大家供大家参考.具体分析如下: 原理: 对图片中选定区域的每一像素,增加若干宽度及高度,生成矩型.而每一像素的矩型重叠在一起,就形成了马赛克效果. ...

  5. MATLAB 2018a 下载安装

    参考链接:https://www.youtube.com/watch?v=BJavEE9KIlY

  6. Android网络编程随想录(2)

    上篇文章介绍了传输层TCP协议的理论知识,本文主要介绍了TCP协议基础之上HTTP协议和HTTPS协议的理论知识. HTTP协议基于TCP协议定义了客户端向服务器请求数据的方式,它是面向事务的应用层协 ...

  7. css中单位的使用

    css中许多的属性都需要添加长度,而长度一般由数字和单位构成,如1px,1.5em,2vh:也可以省略单位,如line-height:1.5,表示行高为字体大小的1.5倍: 长度单位一般也分为相对长度 ...

  8. C++:数据流和缓冲区

    (1):C++之自定义的input缓冲区 原文链接:http://hi.baidu.com/nicker2010/item/d0c4cd2a7caf27c4ddf69aeb input stream用 ...

  9. boost多线程使用简例

    原文链接:http://www.cppblog.com/toMyself/archive/2010/09/22/127347.html C++ Boost Thread 编程指南 转自cnblog: ...

  10. 【技术累积】【点】【java】【3】编译和反编译

    闲聊 擦,打脸了,但打完了还是得继续写呗,水着水着看呗. 概述 理解的不深入,但是实用. 总而言之:编译,是将书写的代码翻译为机器能够理解的代码:反编译,则是相反的过程. 来源在于语言的等级,一般认为 ...