ssh命令详解


    目录

        前言

    一、ssh命令

        1、Ssh参数解释

        2、如何连接远程主机

        3、利用Xstart 在windos上连接linux桌面

        4、ssh客户端配置文件

    二、基于密钥认证登录

        1、在客户端生成密钥对

        2、把公钥文件传输至远程服务器对应用户的家目录

        3、查看已传输到远程主机上文件

        4、验证代理

    三、ssh端口转发

        什么是SSH端口转发?

        1、本地端口转发

        2、远程转发

        3、动态端口转发

        4、ssh服务器端配置文件

    四、ssh服务的最佳实践

前言

Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。

传统的网络服务程序,如rsh、FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口

令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器

的数据,然后再冒充用户把数据传给真正的服务器。而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH

协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

SSH之另一项优点为其传输的数据可以是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为

FTP、POP、甚至为PPP提供一个安全的“通道”。 『维基百科』

一、ssh命令

  1、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转发功能。

2、如何连接远程主机

[root@centos7_1 /]# ssh 172.16.252.16

root@172.16.252.16's password:

Last login: Fri Dec  2 09:20:53 2016 from station16.magelinux.com

[root@Centos6_1 ~]#

3、利用Xstart 在windos上连接linux桌面 

Xstart (和xshell一样是Xmanager其中的一个组件)

选择第7项 GNOME

 输入密码即可

          

    4、ssh客户端配置文件

/etc/ssh/ssh_config 是客户端配置文件

/ect/ssh/sshd_config  是服务器端配置文件

二、基于密钥认证登录

    1、在客户端生成密钥对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@Centos6_1 .ssh]# ssh-keygen   #默认使用rsa加密
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):   
    Enter passphrase (empty for no passphrase): #输入私钥密码(当然也可以不输入的)
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    e5:14:2b:ff:7c:ed:52:a1:0f:4a:3c:b0:a8:4b:c0:b8 root@Centos6_1
    The key's randomart image is:
    +--[ RSA 2048]----+
    |          .      |
    |           o     |
    |        . +      |
    |  o      B     . |
    | . o    S *   . .|
    |  . .  . . * o ..|
    | E   ..   . = +..|
    |    ..     . ..o |
    |     ..        ..|
    +-----------------+

    2、把公钥文件传输至远程服务器对应用户的家目录

1
  ssh-copy-id id_rsa.pub root@172.16.250.240

    3、查看已传输到远程主机上文件

1
2
   [root@centos7_1 .ssh]# ls
   authorized_keys  known_hosts

authorized_keys  这个文件就是刚刚传输的文件至于为什么名字变了这就是ssh-copy-id的原因了,如果用scp来传文件的是不会出现这种效果的这也是为什么刚刚用ssh-copy-id这条命令的原因,这条命令是专门为ssh设定的,具体的内容可以自己查询。

如果从其他方式将公钥拷贝到该目录下,只需将公钥中内容复制到authorized_keys中即可。

    4、验证代理

1
2
3
4
5
6
7
8
9
10
11
12
13
 由于设置了私钥密码在登录远程服务器时还是要输入密码(私钥密码)
 [root@Centos6_1 .ssh]# ssh 172.16.250.240
 Enter passphrase for key '/root/.ssh/id_rsa'
 Last login: Thu Dec  1 16:43:58 2016 from station16.magelinux.com
  [root@centos7_1 ~]#
  如果开启代理的话,则只需要输入一次密码
  [root@Centos6_1 .ssh]# ssh-agent bash
  [root@Centos6_1 .ssh]# ssh-add 
  Enter passphrase for /root/.ssh/id_rsa
  Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa#私钥密码
  [root@Centos6_1 .ssh]# ssh 172.16.250.240
  Last login: Thu Dec  1 16:50:08 2016 from 172.16.252.16
  [root@centos7_1 ~]#

这样以后在登陆的时候就不用输入密码了。

三、ssh端口转发

什么是SSH端口转发?

SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是, SSH 还能够将其他 TCP 端口的网络数据通过 SSH 链接来

转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道”( tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安

全的通道来进行传输而得名。例如, Telnet, SMTP, LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传

输。而与此同时, 如果工作环境中的防火墙限制了一些网络端口的使用,但是允许SSH 的连接,也能够通过将 TCP 端口转发来使用 SSH

进行通讯。

SSH 端口转发能够提供两大功能:

加密 SSH Client 端至 SSH Server 端之间的通讯数据

突破防火墙的限制完成一些之前无法建立的 TCP 连接

   1、本地端口转发

主机A 地址 172.16.250.90/16

主机B 地址 172.16.33.166/16

主机C 地址 172.16.250.240/16 (mysql 服务器)

以上有主机A、B、C三台服务器现在A要求访问C的mysql服务但是因为各种原因暂时无法访问(你可以把它理解为三台主机并联不同

网段,由于我是实验环境所有没有设置不同网段所以各位见谅),但现在主机B可以访问,要求利用ssh的端口转发实现(iptables端口映射

也是可以实现的。)

注意:在做下面的实验时请把防火墙关掉(当然你如果不怕麻烦又可以自己配置iptables则另当别论)。

在主机A上执行以下命令:

Sshl  -L  13306:172.16.250.240:3306 root@172.16.33.166

以上命令的意思是绑定本地(主机A)的13306端口,然后指定主机B将所有的数据转发到目的主机C的3306端口。(如上命令只能是绑

定主机A的环回地址)

如果此时远程连接主机A的windows主机想连接主机C的mysql服务如下图所示:

Windows 主机地址 172.16.251.16

则在主机A执行以下命令:

ssh –L 172.16.250.90:13306:172.16.250.16:3306 root@172.16.33.166

此时windows主机即可访问主机C的mysql服务。

  2、远程转发

还是看上面的例子,如果此时主机B是一台内网地址,主机B可以连接主机A,相反主机A却不能连接主机B,所以此时本地端口转发就

不能用了。

解决办法是,主机B主可以连接主机A如此先让主机B连接主机A,在让主机A利用这条连接去做端口转发,便可以实现主机A连接主机C。

在主机B上执行以下命令:

ssh –R 13306:172.16.250.16:3306 172.16.250.90

以上命令R参数接收3个值,分别为远程主机端口:目标主机:目标主机端口。意思是让主机A监听它的13306端口,然后所有数据进

过主机B转发到主机C的3306端口,对于主机B来说主机A为远程端口,所以此种方法被称为“远程端口转发”.

  3、动态端口转发

假设此时需要FQ访问facebook等网站,但现在没有好的FQ软件恰巧你有一台国外的虚拟主机主机B此时只需在主机A上做一个动

态端口转发即可。

在主机A上执行以下命令

Ssh –L 8080 root@172.16.250.240

此时只需在浏览器中配置主机A的ip地址为代理服务器则即可访问facebook。

  4、ssh服务器端配置文件

配置文件 /ect/ssh/sshd_config

常用参数:

Port  # 可修改ssh访问端口

ListenAddress ip   #监听IP

PermitRootLogin yes  #是否允许ssh远程登录root帐号

ClientAliveInterval 0   #客户端连接数

UseDNS yes #DNS解析

限制可登录用户的办法:

AllowUsers user1 user2 user3    #允许ssh登录用户

DenyUsers #禁止ssh登陆用户

AllowGroups #允许ssh登录用户组

DenyGroups ##禁止ssh登陆用户组

四、ssh服务的最佳实践

1、不要使用默认端口

2、禁止使用protocol version 1

3、限制可登录用户

4、设定空闲会话超时时长

5、利用防火墙设置ssh访问策略

6、仅监听特定的IP地址

7、基于口令认证时,使用强密码策略

tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs

8、使用基于密钥的认证

9、禁止使用空密码

10、禁止root用户直接登录

11、限制ssh的访问频度和并发在线数

12、做好日志,经常分析

SSH命令详解2的更多相关文章

  1. ssh命令详解

    1.简介: Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定:SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的She ...

  2. Linux ssh命令详解

    SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ...

  3. ssh命令详解3

    SSH 的详细使用方法如下: ssh [-l login_name] [hostname | user@hostname] [command] ssh [-afgknqtvxCPX246] [-c b ...

  4. Linux 命令之 scp 命令详解

    Linux 命令之 scp 命令详解 一.scp 简介 scp 命令用于不同主机之间复制文件和目录. scp 是 secure copy 的缩写,是 基于 ssh 协议进行安全的远程文件拷贝命令. s ...

  5. ssh scp命令详解

    --查看版本 $ ssh -V OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003 --用SSH登录到远程主机 localhost$ ssh -l jsmith(用户名 ...

  6. scp命令详解

    \ svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解   名称:cp 使用权限: ...

  7. 【转】centos关机与重启命令详解

    连接:http://blog.csdn.net/jiangzhengdong/article/details/8036594 Linux centos关机与重启命令详解与实战 Linux centos ...

  8. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  9. linux下tar命令详解

     linux下tar命令详解    tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...

随机推荐

  1. 【转帖】(一)unity4.6Ugui中文教程文档-------概要

    原帖至上,移步请戳:(一)unity4.6Ugui中文教程文档-------概要 unity4.6中的一个重要的升级就是GUI ,也把它称为UGUI ,废话我不多说,大家可以百度了解一下. 虽然现在处 ...

  2. Spark SQL inferSchema实现原理探微(Python)【转】

    使用Spark SQL的基础是“注册”(Register)若干表,表的一个重要组成部分就是模式,Spark SQL提供两种选项供用户选择:   (1)applySchema     applySche ...

  3. 【socket】小项目-智能点餐系统

    系统说明 前段时间做的一个智能点餐系统,从0开始,用时3天,其中调bug(内存拷贝)调了一天,囧,现记一些架构文档 这个系统涉及到的知识点还是挺多的 典型的c/s模式,socket通信 多线程操作 数 ...

  4. Mybatis的mapper注册

    既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了.但是首先我们需要告诉 MyBatis 到哪里去找到这些语句. Java 在自动查找这方面没有提供一个很好的方法 ...

  5. LVS之NAT模型、DR模型配置和持久连接

    前言:继LVS概述,本篇实现NAT模型和DR模型下的负载均衡. NAT模型: LVS-NAT基于cisco的LocalDirector.VS/NAT不需要在RealServer上做任何设置,其只要能提 ...

  6. Spring事务管理要点总结

    # Spring事务管理要点总结 ### 要点---- 事务是企业级应用中必不可缺少的技术,用来确保数据的完整性和一致性.- Spring事务管理并不实现事务管理的实现,而是借助Hibernate\J ...

  7. jdbc连接sqlserver报错java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

    使用2008的数据库, 我已经引入的sqljdbc4的包,单还是报这个错,很奇怪突然想到在配置hibernate的时候,是拷贝下来的代码 然后到网上查了下, 因为是2008的版本驱动和2000的有点不 ...

  8. pandas的学习总结

    pandas的学习总结 作者:csj更新时间:2017.12.31 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 1 ...

  9. 【转】Java中JDK和JRE的区别是什么?它们的作用分别是什么?

    原文地址:http://blog.csdn.net/qq_33642117/article/details/52143824 JDK和JRE是Java开发和运行工具,其中JDK包含了JRE,但是JRE ...

  10. C语言 · 字串逆序

    算法训练 字串逆序   时间限制:1.0s   内存限制:512.0MB      问题描述 给定一个字符串,将这个串的所有字母逆序后输出. 输入格式 输入包含一个字符串,长度不超过100,字符串中不 ...