`

ssh简单原理和无密码登录

阅读更多

登录方式   

第一种级别(基于口令的安全验证)

只要你知道自己帐号和口令,就可以登录到远程主机。所传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

 

口令登录过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

 

第二种级别(基于密匙的安全验证

密匙认证原理简介 

  密匙认证需要依靠密匙,首先创建一对密匙(包括公匙和私匙,用公匙加密的数据只能用私匙解密,把公匙放到需要远程服务器上,私钥放在客户端。  这样当登录远程服务器时,客户端软件就会向服务器发出认证请求(携带公匙);  服务器收到请求之后,先在服务器的宿主目录下寻找你的公匙,然后检查该公匙是否是合法,  如果合法就用公匙加密一随机数生成所谓的“challenge”发送给客户端软件;   客户端软件收到“challenge”之后就用私匙解密再把结果发送给服务器。  因为用公匙加密的数据只能用私匙解密,服务器经过比较就能知道该客户连接的合法性。

 

用这种方式,你必须知道自己密匙的口令。 但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没你的私人密匙。但是整个登录的过程可能需要10秒。

 

SSH也支持一些其他的身份认证方法,如Kerberos和安全ID卡等

 



 

几个命令

//服务是否安装

[root@centhost2 ssh]# rpm -qa | grep ssh

openssh-clients-5.3p1-94.el6.x86_64

trilead-ssh2-213-6.2.el6.noarch

ksshaskpass-0.5.1-4.1.el6.x86_64

openssh-askpass-5.3p1-94.el6.x86_64

openssh-5.3p1-94.el6.x86_64

libssh2-1.4.2-1.el6.x86_64

openssh-server-5.3p1-94.el6.x86_64

You have new mail in /var/spool/mail/root

 

//服务状态、启动、停止、重启

[root@centos65 init.d]# service sshd

Usage: /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}

 [root@centhost2 ssh]# service sshd status

openssh-daemon (pid  58999) 正在运行...

 

ps: sshd 即ssh daemon是服务端程序,而ssh是客户端程序

在/etc/ssh/下sshd_config是服务配置,ssh_config是客户端配置

 

//设置自启动

 [root@centhost2 ssh]# chkconfig sshd on

 chkconfig sshd off关闭自启动

也可以执行“ntsysv”命令启动服务配置程序,在出现的对话框中找到“sshd”服务,然后按“空格”键在其前面加上“*”星号,按“Tab”键选择“确定”按钮保存即可,让系统每次启动时自动运行SSH服务。

 

 公匙登录

生成密匙对 

ssh-keygen -t dsa -P '' -f  ~/.ssh/id_dsa

ssh-keygen代表生成密钥; -t 表示指定生成的密钥类型 ;dsa是dsa密钥认证的意思,即密钥类型; -P用于提供密语; -f指定生成的密钥文件

 

ssh-keygen -t rsa或者ssh-keygen -t rsa -P ''

-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三次回车,用-P就一次回车

centos65机器上,laolv用户下:

[laolv@centos65 .ssh]$ ssh-keygen -t dsa -P 'lzq123' -f ~/.ssh/id_dsa_laolv_centos65

Generating public/private dsa key pair.

Your identification has been saved in /home/laolv/.ssh/id_dsa_laolv_centos65.

Your public key has been saved in /home/laolv/.ssh/id_dsa_laolv_centos65.pub.

The key fingerprint is:

3a:51:53:ec:17:b4:63:b4:4a:24:1d:83:07:27:2c:20 laolv@centos65

The key's randomart image is:

+--[ DSA 1024]----+

|  E .. .+=*oo    |

|   .  . o*+o.o   |

|       .oo. =.   |

|       . o.o..   |

|      . S ..     |

|       o         |

|      o          |

|       .         |

|                 |

+-----------------+

[laolv@centos65 .ssh]$ ll

总用量 12

-rw-------. 1 laolv laolv 744 1月  11 00:03 id_dsa_laolv_centos65

-rw-r--r--. 1 laolv laolv 604 1月  11 00:03 id_dsa_laolv_centos65.pub

-rw-r--r--. 1 laolv laolv 391 1月   4 03:12 known_hosts

 

将客户机的公匙追加到服务主机的authorized_keys文件

远程主机将用户的公钥,保存在登录后的用户主目录的 $HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

这条命令由多个语句组成,依次分解开来看:

(1)"$ ssh user@host",表示登录远程主机;

(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表示登录后在远程shell上执行的命令:

        (3)"$ mkdir -p .ssh"的作用是,如果用户主目录中的.ssh目录不存在,就创建一个;

        (4)'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到远程文件authorized_keys的末尾。

写入authorized_keys文件后,公钥登录的设置就完成了。

 

[laolv@centhost2 .ssh]$ ssh laolv@192.168.1.145 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa_laolv_centhost2.pub

laolv@192.168.1.145's password: 

[laolv@centhost2 .ssh]$

 

在服务主机

[laolv@centos65 .ssh]$ ll

总用量 16

-rw-rw-r--. 1 laolv laolv 1002 1月  11 00:49 authorized_keys

-rw-------. 1 laolv laolv  744 1月  11 00:03 id_dsa_laolv_centos65

-rw-r--r--. 1 laolv laolv  604 1月  11 00:03 id_dsa_laolv_centos65.pub

-rw-r--r--. 1 laolv laolv  391 1月   4 03:12 known_hosts

[laolv@centos65 .ssh]$ cat authorized_keys 

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAn+STDthiIwzaAUbdRJJJfoMoy/6fFjEa6tUSXEocz1QZpoaTHE8MHCnp91LY0n3jnghepoHOCCwACDl14Q3+7RP+Loo5oXDG378kcrkKyvk9ydd3i59NdvkYIAGRPR26/x7EADmynyFZSc4qmroe+lXj5UDtCrhqWgBdIIbtUITEu70RULjm8YsTrBbr5yjIyNiYOa0q238Cj9q8kdtesatsxhAOD8NDS0k/3+T9rlqs5OIYfSEZfTyFF10Xnh17kLI0m49LJvb9xgy4hJlUBLnYtv8PNrhY1p3+Ss1aFeo8oPHEAPVmoQAxgXeiN0d1e+llpNMLAgKz4VZ7JHmaVQ== laolv@centhost2

[laolv@centos65 .ssh]$

 

[laolv@centhost2 .ssh]$ ssh laolv@192.168.1.145

laolv@192.168.1.145's password: 

还是会输入密码

 

错误排查

看日志,/var/log/secure   /var/log/messages(一般是系统的日志,例如你的硬件或者内核有问题,可以查看这个日志;遇到过内存有问题就在这下面有相关日志)通常会告诉你为什么的

[root@centos65 ssh]# vi /var/log/secure 

an 11 01:13:59 centos65 sshd[12080]: Server listening on 0.0.0.0 port 22.

Jan 11 01:13:59 centos65 sshd[12080]: Server listening on :: port 22.

Jan 11 01:15:09 centos65 sshd[12095]: Authentication refused: bad ownership or modes for file /home/laolv/.ssh/authorized_keys

Jan 11 01:15:09 centos65 sshd[12095]: Authentication refused: bad ownership or modes for file /home/laolv/.ssh/authorized_keys

Jan 11 01:15:09 centos65 sshd[12095]: Authentication refused: bad ownership or modes for file /home/laolv/.ssh/authorized_keys

Jan 11 01:15:09 centos65 sshd[12095]: Authentication refused: bad ownership or modes for file /home/laolv/.ssh/authorized_keys

 

问题似乎很明显了,authorized_keys的权限问题,搜索了一下,发现此文件权限必须为600,这个测试用户是本人新建的,文件的权限不正确,于是修改之:

$ chmod 600 ~/.ssh/authorized_keys

.ssh目录的权限必须为700

$ chmod 700 ~/.ssh/

 

经过修改$ chmod 600 ~/.ssh/authorized_keys,可以免密码登录了:

[laolv@centhost2 .ssh]$ ssh laolv@192.168.1.147 ##第一次,要授权访问私匙

这儿要填的密码是,ssh-keygen时 -P 设定的密码lzq123

 

授权,允许服务主机访问客户机的私匙后,再一次登录,不需要输密码了

[laolv@centhost2 .ssh]$ ssh laolv@192.168.1.147

Last login: Sun Jan 11 03:37:07 2015 from 192.168.1.146  ###不再输入密码,可登录了  (也不不需要修改服务主机的/etc/ssh/ssh_config文件 及 重启ssh服务)

 

[laolv@centhost3 ~]$ 

如果还是不行,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。

  RSAAuthentication yes ###lzq 能找到RSAAuthentication,没有DSAAuthentication

  PubkeyAuthentication yes

  AuthorizedKeysFile .ssh/authorized_keys

然后,重启远程主机的ssh服务。

 

再我的机器上经过证实,不需要上述修改配置文件

 

 

 

 

 

 

 

 

 

 

  • 大小: 52.8 KB
分享到:
评论

相关推荐

    login-with-ssh, 使用 SSH http验证web会话的实验.zip

    login-with-ssh, 使用 SSH http验证web会话的实验 使用SSH登录的这里是演示。...无密码的认证 !工作原理定制的SSH服务器监听连接。 它不是提供 shell 或者任何其他服务,而是验证你提供的public 密

    linux远程登录ssh免密码配置方法

    很简单,使用ssh-keygen 在主机A上生成private和public密钥,将生成的public密钥拷贝到远程机器主机B上后,就可以使用ssh命令无需密码登录到另外一台机器主机B上。 三、步骤 主机A: 1、 生成公钥和私钥文件id_rsa和...

    轻量级的集群管理利器ClusterShell

    很多集群管理软件都需要在所有的服务器上都安装软件,而且还要进行很多的连接操作,clustershell就相当的方便了,仅仅需要所有机器能够ssh无密码登录即可,然后只在一台服务器上安装clustershell即可。 3)使用方便...

    企业级Linux服务攻略

    5.1.3 简单邮件传输协议(SMTP) 5.1.4 POP3协议 5.1.5 IMAP协议 5.1.6 邮件中继 5.1.7 邮件认证机制 5.2 安装Sendmail服务 5.2.1 Sendmail服务软件简介 5.2.2 Sendmail服务安装 5.2.3 相关的配置文档 5.3 ...

    MySQL高可用架构MHA

    1.配置四台主机ssh登录不用密码 ssh-keygen -t rsa ssh-copy-id 192.168.100.10(20.30.102) 2.上传安装包,解压编译安装 配置yum仓库 vim /etc/yum.repos.d/mhapath.repo ##进入yum仓库,插入以下 [mha] name=...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    freeSSHd配置sftp服务器.doc

    Users 选项卡 用户管理,Add用户,输入登录名,Authorization 是用户授权方式,这里有三种,第一种是windows 系统账户登录,第二种是自定义用户名密码登录(这种方式很简单,开启服务后通过FT P客户端直接用户名...

    Linux管理员指南

    使用Apache设置Web服务器 212 14.1 HTTP协议的基本原理 212 14.1.1 标题 212 14.1.2 非标准端口 213 14.1.3 进程所有者 214 14.2 安装Apache HTTP服务器 214 14.2.1 编译Apache软件 215 14.2.2...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包2

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包3

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包4

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    WIFI作品DIY教程02-《openwrt摄像头》3D外壳和diy教程-电路方案

    输入root,和密码 登陆成功! opkg update 更新软件 opkg install mjpg-streamer 安装摄像头驱动(如果已经安装了,就可以不用安装!) mjpg_streamer -i "input_uvc.so /dev/video0 -r 640x480 " -o "output_...

    Java学习笔记-个人整理的

    {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{subsection.1.4.2} {1.4.3}\texttt {char}}{24}{subsection.1.4.3} {1.4.4}转义字符}{25}{subsection.1.4.4} {1.4.5}Boolean ...

Global site tag (gtag.js) - Google Analytics