它是什么??

SSH 为 Secure Shell 的缩写,简单地说,SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

Openssh 为这种协议的实现或实体,我们可以通过 openssh 这个开源的软件进行远程登录。

为什么要用它?

由于我笔记本上装的为debian系统,而台式机为windows系统并且双屏,再把我的笔记本记到桌子上真的没有多少地方了,并且操作笔记本时还要扭着身子,太麻烦了。所以呢,打算远程登录我的笔记本。用的我台式电脑里有虚拟机并里面的utunbu或kali系统登录它(真心不想装windows式下的ssh的client).

第一步:安装

OpenSSh 分为客户端openssh-client 与服务端 openssh-server.一般情况下,我们的linux系统都会自带 client端的。

最简单的方法下载:

apt-get install openssh-client
apt-get install openssh-server

安装完成以后,可以通过以下命令看到它们运行的进程:

ps -e |grep ssh

#输出:
1943 ? 00:00:00 ssh-agent #表示客户端已运行;
16322 ? 00:00:00 sshd #表示服务端已运行;

第二步:SSH的简单配置

ssh的配置文件为:/etc/ssh/sshd_config.  在网上找到了一个中文的注释文件(来自:http://xujpxm.blog.51cto.com/8614409/1717862),太方便了:

Port 22  #设置ssh监听的端口号,默认22端口
ListenAddress ::
ListenAddress 0.0.0.0 #指定监听的地址,默认监听所有;
Protocol 2,1 #指定支持的SSH协议的版本号。'1'和'2'表示仅仅支持SSH-1和SSH-2协议。
#"2,1"表示同时支持SSH-1和SSH-2协议。#
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key #HostKey是主机私钥文件的存放位置;
#SSH-1默认是 /etc/ssh/ssh_host_key 。SSH-2默认是 /etc/ssh/ssh_host_rsa_key和
#/etc/ssh/ssh_host_dsa_key 。一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,
#"dsa"和"rsa"仅用于SSH-2。
UsePrivilegeSeparation yes #是否通过创建非特权子进程处理接入请求的方法来进行权
#限分 离。默认值是"yes"。 认证成功后,将以该认证用户的身份创另一个子进程。这样做的目的是
#为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。
KeyRegenerationInterval 3600 #在SSH-1协议下,短命的服务器密钥将以此指令设置的时
#间为周期(秒),不断重新生成;这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。设为 0
#表示永不重新生成为 3600(秒)。
ServerKeyBits 1024 #指定服务器密钥的位数
SyslogFacility AUTH #指定 将日志消息通过哪个日志子系统(facility)发送。有效值是:
#DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3,LOCAL4, LOCAL5,
#LOCAL6, LOCAL7
LogLevel INFO #指定日志等级(详细程度)。可用值如下:QUIET, FATAL, ERROR, INFO
#(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3,DEBUG 与 DEBUG1 等价;DEBUG2
# 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。比 DEBUG 更详细的日志可能会泄漏用户
# 的敏感信息,因此反对使用。
LoginGraceTime 120 #限制用户必须在指定的时限(单位秒)内认证成功,0 表示无限制。默认
#值是 120 秒;如果用户不能成功登录,在用户切断连接之前服务器需要等待120秒。
PermitRootLogin yes #是否允许 root 登录。可用值如下:"yes"(默认) 表示允许。
#"no"表示禁止。"without-password"表示禁止使用密码认证登录。"forced-commands-only"
#表示只有在指定了 command 选项的情况下才允许使用公钥认证登录,同时其它认证方法全部被禁止。
#这个值常用于做远程备份之类的事情。
StrictModes yes #指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配
#置文件 进行宿主和权限检查。强烈建议使用默认值"yes"来预防可能出现的低级错误。
RSAAuthentication yes #是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。
PubkeyAuthentication yes #是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。
IgnoreRhosts yes #是否取消使用 ~/.ssh/.rhosts 来做为认证。推荐设为yes。
RhostsRSAAuthentication no #这个选项是专门给 version 1 用的,使用 rhosts 档案在              
#/etc/hosts.equiv配合 RSA 演算方式来进行认证!推荐no。
HostbasedAuthentication no #这个与上面的项目类似,不过是给 version 2 使用的
IgnoreUserKnownHosts no #是否在 RhostsRSAAuthentication 或
#HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。默认值是"no"。
#为了提高安全性,可以设为"yes"。
PermitEmptyPasswords no #是否允许密码为空的用户远程登录。默认为"no"。
ChallengeResponseAuthentication no #是否允许质疑-应答(challenge-response)认
#证。默认值是"yes",所有 login.conf中允许的认证方式都被支持。
PasswordAuthentication yes # 是否允许使用基于密码的认证。默认为"yes"。
KerberosAuthentication no #是否要求用户为 PasswordAuthentication 提供的密码
#必须通 过 Kerberos KDC 认证,也就是是否使用Kerberos认证。使用Kerberos认证,服务器
#需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。
KerberosGetAFSToken no #如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,
#那么开 启该指令后,将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。
KerberosOrLocalPasswd yes #如果 Kerberos 密码认证失败,那么该密码还将要通过其它
#的 认证机制(比如 /etc/passwd)。默认值为"yes"。
KerberosTicketCleanup yes #是否在用户退出登录后自动销毁用户的 ticket 。默认
#"yes"。
GSSAPIAuthentication no #是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。
#仅用 于SSH-2。
GSSAPICleanupCredentials yes #是否在用户退出登录后自动销毁用户凭证缓存。默认值
#是"yes"。仅用于SSH-2。
X11Forwarding no #是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果
#允许X11转发并且sshd代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。
#那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需
#要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如
#果启用了 UseLogin ,那么X11转发将被自动禁止。
X11DisplayOffset 10 #指定X11 转发的第一个可用的显示区(display)数字。默认值
#是 10 。这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。
PrintMotd no #登入后是否显示出一些信息呢?例如上次登入的时间、地点等
#等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !
PrintLastLog yes #指定是否显示最后一位用户的登录时间。默认值是"yes"
TCPKeepAlive yes #指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"
#。这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。可以设为"no"关闭这个特性。
UseLogin no #是否在交互式会话的登录过程中使用 login。默认值是"no"。
#如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login 不知道如何处理 xauth
#cookies 。需要注意的是,login是禁止用于远程执行命令的。如果指定了
#UsePrivilegeSeparation ,那么它将在认证完成后被禁用。
MaxStartups 10 #最大允许保持多少个未认证的连接。默认值是 10 。到达限制后,
#将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。
MaxAuthTries 6 #指定每个连接最大允许的认证次数。默认值是 6 。如果失败认证的次数超
#过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。
UseDNS no #指定是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP
#地址真实对应。
Banner /etc/issue.net #将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。
#这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。
Subsystem sftp /usr/lib/openssh/sftp-server #配置一个外部子系统(例如,一个文件
#传输守 护进程)。仅用于SSH-2协议。值是一个子系统的名字和对应的命令行(含选项和参数)。
UsePAM yes #是否使用PAM模块认证

根据自己的要求,自己配置就可以了。带 # 的表示注释掉了。

我自己的修改为:增加了 root登录的权限。即:

#  修改前
PermitRootLogin without-password
# 修改后
PermitRootLogin yes

第三步:重新启动服务

修改后以后,我们需要重新启动服务:

#方法一:
/etc/init.d/ssh restart # 方法二:
service ssh restart

通过 service ssh status 可以查看服务的状态。

第四步:如何登录与退出

因为我用的是局域网,我的电脑在同一个网段里,所以登录很简单,对于远程登录的话, 没有去研究,暂时用不着。

1. 在主机上打开 ssh的服务。

2. 在另一个机器上(前提安装为ssh的客户端,不过基本linux系统都会安装的)输入: ssh 用户名@IP地址 ,然后会提示你输入密码, 就OK了。

3. 如果退出的话,输入: exit.

第五步:如何在客户机上显示服务端运行的图形结果

对于这一步的设置,我也不请楚为什么网上的设置这么复杂呢,我的设置如下:

1. 在服务端的配置文件中 /etc/ssh/sshd_config 中设置 X11Forwarding yes 选项,并重启 ssh 服务;

2. 在客户机的配置文件中 /etc/ssh/ssh_config 中设置 ForwardX11 yes 选项;

3. 在客户机登录前 输入:xhost + 服务端的IP ,这个操作是:允许服务端的图形显示在客户机的显示器上;

4. 登录:ssh 用户名@服务端IP;

5. 验证: 我们可以登录以后的窗口上输入一个图形显示的命令如:xclock,如果显示图形,则表示成功了。

注意:在不设置第2步前提时,第4步也可以这样登录: ssh –X 用户名@服务端IP;

相关补充:

来自:http://xujpxm.blog.51cto.com/8614409/1717862

1、SSH1 vs. SSH2

SSH协议规范存在一些小版本的差异,但是有两个主要的大版本:SSH1 (版本号 1.XX) 和 SSH2 (版本号 2.00)。事实上,SSH1和SSH2是两个完全不同互不兼容的协议。SSH2明显地提升了SSH1中的很多方面。首先,SSH是宏设计,几个不同的功能(如:认证、传输、连接)被打包进一个单一的协议,SSH2带来了比SSH1更强大的安全特性,如基于MAC的完整性检查,灵活的会话密钥更新、充分协商的加密算法、公钥证书等等。这就是用SecurityCRT的时候为什么会让你选择ssh1还是ssh2的原因。

SSH2由IETF标准化,且它的实现在业界被广泛部署和接受。由于SSH2对于SSH1的流行和加密优势,现在几乎所有Linux新发行版中,OpenSSH服务器默认禁用了SSH1。

2、SSH基于密钥的安全验证

这种登陆方式,需要依靠密钥,也就是说你必须为自己创建一对密钥对(公钥和私钥),并且把该公钥放到需要访问的服务器上。

注意:不能在需要访问的服务器上创建密钥,否则无法通过该密钥连接该服务器,但是通过该密钥连接其他服务器是正常的。

如果你要连接到ssh服务器,ssh客户端会向ssh服务器发出请求,请求用你的密钥进行安全验证。ssh服务器在收到该请求之后,会先在ssh服务器上,检查你登陆的用户的主目录下寻找对应的公钥,然后把它和你发送过来的公钥进行比较。如果两个公钥一致,ssh服务器就用公钥加密“质询”(challenge)并把它发送给ssh客户端。ssh客户端在收到“质询”之后就可以用你的私钥解密该“质询”,再把它发送给ssh服务器。

3. /etc/hosts.allow 和/etc/hosts.deny

有些server会用这两个文件限制登陆的ip,通常是deny里面deny all,然后再allow需要登陆的ip地址;例如:

先禁止所有:

[root @test root]# cat /etc/hosts.deny

sshd: ALL : deny 

再放行允许访问的ip:

[root @test root]# cat  /etc/hosts.allow

sshd:10.10.10.* : allow      允许10.10.10.0/24网段登陆

sshd: 192.168.2.2 : allow   允许192.168.2.2这个ip登陆

debian系统下安装ssh服务的更多相关文章

  1. debian系统下安装ssh

    SSH 为 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中 ...

  2. Ubuntu下安装SSH服务

    判断是否安装ssh服务,可以通过如下命令进行: $ ssh localhost ssh: connect to host localhost port 22: Connection refused 如 ...

  3. Debian系统下的ftp服务搭建

    安装vsftpd服务 $ sudo apt install vsftpd 配置参数 命令输入 $ vim /etc/vsftpd.conf 使用如下配置 # Example config file / ...

  4. 转:ubuntu下安装ssh服务

    本文内容来自 http://www.cnblogs.com/chen1987lei/archive/2010/12/02/1894768.html ========================= ...

  5. 64位debian系统下安装inodeClient

    linux下的inodeClient下载: 链接:http://pan.baidu.com/s/1jIoX6Zk 密码:vnws 里面包括一份说明书,一个32位的,一个64位的文件: 对于64位的客户 ...

  6. windows64系统下安装 redis服务 (详细)

    Linux下Redis安装链接 :     转到 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表) ...

  7. Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因

    原文:Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因 今天试了下在虚拟机上利用CentOS系统的yum命令安装好了httpd(apache2.4.6), ...

  8. nssm常用命令(在Windows系统下安装服务的工具)

    nssm install servername //创建servername服务 nssm start servername //启动服务 nssm stop servername //暂停服务 ns ...

  9. Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器

    修改root用户密码 打开终端,输入 sudo passwd root 指令: 安装SSH服务 ssh默认端口号是22,可以在/etc/ssh/sshd_config文件中修改 查看服务器否开启:ne ...

随机推荐

  1. iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比

    iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比   iphoneiPhoneIPhoneIPHONEIphone数据持久化 对比总结 本篇对IOS中常用的5种数据持久化方法进行简单 ...

  2. 使用NSTimer实现倒计时-备

    今天在CocoaChina上面看到有人在问倒计时怎么做,记得以前在看Iphone31天的时候做过一个,今天翻出来运行不了了,原因是我的IphoneSDK升级到3.1了,以前使用的是2.2.1,在2.2 ...

  3. composer在ubuntu下安装

    通过curl下载composer安装包 curl -sS https://getcomposer.org/installer | php 将安装包移动到全局安装文件夹下 mv composer.pha ...

  4. Android获取当前时间与星期几

    public class DataString { private static String mYear; private static String mMonth; private static ...

  5. BOT、BT、PPP形式介绍(2)

    BT1.什么是BT     BT投资是BOT的一种变换形式,即Build-Transfer(建设—转让),政府通过特许协议,引入国外资金或民间资金进行专属于政府的基础设施建设,基础设施建设完工后,该项 ...

  6. bzoj4003

    http://www.lydsy.com/JudgeOnline/problem.php?id=4003 可合并堆. 每个点都有一个小根堆,记住可以到这个点的骑士有哪些,以战斗力为关键字. 从底层到顶 ...

  7. thinkphp分页时修改last显示标题

    需要修改Page.class.php里lastSuffix为false,这样才能修改last显示标题. 然后就可以设置了 或者直接在方法中声明: $p->lastSuffix = false; ...

  8. Beyond Compare 忽略两个文件内容的顺序比较文件内容(xjl456852原创)

    有时两个文件内容的顺序是不固定的,对比时需要忽略文件顺序进行对比. 可以这样设置: 点击菜单下面工具栏按钮: 点击Format旁的三角,选择Sorted,就会按文件的顺序排序比较.忽略了文件内容顺序的 ...

  9. Spark Yarn-cluster与Yarn-client

    摘要 在Spark中,有Yarn-Client和Yarn-Cluster两种模式可以运行在Yarn上,通常Yarn-cluster适用于生产环境,而Yarn-Cluster更适用于交互,调试模式,以下 ...

  10. 我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)

    概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片.但是我们不能把所有的功能罗列到一个ta ...